Packages
diint_utilites_common_app
1.4.21
1.4.23
1.4.22
1.4.21
1.4.20
1.4.19
1.4.18
1.4.17
1.4.16
1.4.15
1.4.14
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.9
1.3.8
1.3.7
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.101
1.2.11
1.2.10
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
библиотеки для работы с ребитом и протоколы
Current section
Files
Jump to
Current section
Files
src/log/json_logger_formatter.erl
-module(json_logger_formatter).
-export([format/2,output_message/7]).
format( #{level := Level,
msg := Message,
meta := #{pid := Pid,
time := Timestamp,
line := Line} = Meta} = MI, _FConfig)->
{MODULE, FUNCTION_NAME, _FUNCTION_ARITY} = get_mfa_data(Meta),
output_message(Level,Message,msToDate(Timestamp), MODULE,FUNCTION_NAME,MI,Pid);
format( #{level := Level,
msg := Message,
meta := #{pid := Pid}} = MI, _FConfig) ->
output_message(Level,Message,calendar:now_to_local_time(os:timestamp()), unknown,unknown, MI,Pid);
format( #{level := Level,
msg := Message} = MI, _FConfig) ->
output_message(Level,Message,calendar:now_to_local_time(os:timestamp()), unknown,unknown, MI,erlang:list_to_pid("<0.1.0>")).
get_message({report, Report})->
Report;
get_message({string, Chardata})->
#{text => unicode:characters_to_binary(Chardata)};
get_message({Io, Data})-> #{ text => unicode:characters_to_binary(io_lib:format(Io,Data)), param => 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 => true,
template => [time," ",level,": ",msg,"\n"],
time_designator => $T,
time_offset => ""}.
msToDate(Milliseconds) ->
MegaSecs = Milliseconds div 1000000000000,
Secs = Milliseconds div 1000000 - MegaSecs*1000000,
MicroSecs = Milliseconds rem 1000000,
calendar:now_to_local_time({MegaSecs, Secs, MicroSecs}).
% BaseDate = calendar:datetime_to_gregorian_seconds({{1970,1,1},{0,0,0}}),
% Seconds = BaseDate + (Milliseconds div 1000000),
% {Date, {Hour, Minute, Second}} = calendar:gregorian_seconds_to_datetime(Seconds),
% {Date,{Hour + 3 rem 23,Minute, Second}}.
get_mfa_data(Meta) ->
case Meta of
#{mfa := MFA} ->
case MFA of
{MODULE, _FUNCTION_NAME, _FUNCTION_ARITY} -> {MODULE, _FUNCTION_NAME, _FUNCTION_ARITY};
_else -> {unknown, unknown, unknown}
end;
_else -> {unknown, unknown, unknown}
end.
output_message(Level,Message,Time, MODULE,FUNCTION_NAME,MI,Pid) ->
case jsone:try_encode(#{level => Level, message => get_message(Message), time => Time,module => MODULE,func_name => FUNCTION_NAME, pid => erlang:pid_to_list(Pid)},[native_utf8]) of
{ok,Bin} -> Bin;
_ -> case jsone:try_encode(#{message => #{text =>unicode:characters_to_binary(logger_formatter:format(MI,get_default_config()))}, level => Level, time => Time, module => MODULE,func_name => FUNCTION_NAME, pid => erlang:pid_to_list(Pid)},[native_utf8]) of
{ok,Bin} -> Bin;
_ -> {ok,Bin} = jsone:try_encode(#{message => #{ text => <<"критическая ошибка логирования">>}, level => <<"Fatal">>, pid => erlang:pid_to_list(Pid)}), Bin
end
end.