Current section

Files

Jump to
diint_utilites_common_app src log json_logger_formatter.erl
Raw

src/log/json_logger_formatter.erl

-module(json_logger_formatter).
-export([format/2]).
format( #{level := Level,
msg := Message,
meta := #{pid := Pid,
time := Timestamp,
line := Line,
mfa := {MODULE, FUNCTION_NAME, _FUNCTION_ARITY}
}} = MI, _FConfig)->
case jsone:try_encode(#{level => Level, message => get_message(Message), pid => Pid, timestamp => Timestamp, line => Line, module => MODULE, func_name => FUNCTION_NAME}) of
{ok,Bin} -> Bin;
_else -> case jsone:try_encode(#{message => logger_formatter:format(MI,get_default_config()), level => <<"Fatal">>}) of
{ok,Bin} -> Bin;
_else -> jsone:try_encode(#{message => "критическая ошибка логирования", level => <<"Fatal">>})
end
end.
get_message({report, Report})->
Report;
get_message({string, Chardata})->
unicode:characters_to_binary(Chardata);
get_message({Io, Data})-> io_lib:format(Io,Data).
get_default_config()->
#{chars_limit => unlimited,
depth => unlimited,
legacy_header => true,
max_size => unlimited,
report_cb => fun(Report) -> logger:format_report(Report) end,
single_line => false,
template => [time," ",level,": ",msg,"\n"],
time_designator => $T,
time_offset => ""}.