Current section

Files

Jump to
glimt src glimt@erlang_logger@basic_formatter.erl
Raw

src/glimt@erlang_logger@basic_formatter.erl

-module(glimt@erlang_logger@basic_formatter).
-compile(no_auto_import).
-export([use_with_handler/1, format/2]).
-spec use_with_handler(binary()) -> nil.
use_with_handler(Handler_id) ->
logger:set_handler_config(
glimt@erlang_logger@common:a(Handler_id),
glimt@erlang_logger@common:a(<<"formatter"/utf8>>),
{glimt@erlang_logger@common:a(
<<"glimt@erlang_logger@basic_formatter"/utf8>>
),
gleam@dynamic:from(nil)}
).
-spec format(gleam@dynamic:dynamic(), gleam@dynamic:dynamic()) -> binary().
format(Log_event, Config) ->
case glimt@erlang_logger@log_event:decode_log_event(Log_event) of
{ok, Log_event@1} ->
Styled_time = glimt@style:style_time(
glimt@erlang_logger@common:time_to_string(
erlang:element(2, Log_event@1)
)
),
Level_string = gleam@erlang:format(erlang:element(3, Log_event@1)),
Styled_level = (style_level(erlang:element(3, Log_event@1)))(
Level_string
),
Styled_name = glimt@style:style_name(
format_name_and_pid(
erlang:element(6, Log_event@1),
erlang:element(5, Log_event@1)
)
),
Error_string = case erlang:element(7, Log_event@1) of
{some, Error} ->
<<" | "/utf8, Error/binary>>;
none ->
<<""/utf8>>
end,
case Log_event@1 of
{message, _, _, Message, _, _, _} ->
Styled_message = Message,
<<<<<<<<<<<<<<<<Styled_time/binary, " | "/utf8>>/binary,
Styled_level/binary>>/binary,
" | "/utf8>>/binary,
Styled_name/binary>>/binary,
" | "/utf8>>/binary,
Styled_message/binary>>/binary,
Error_string/binary>>/binary,
"\n"/utf8>>;
{report, _, _, Report, _, _, _} ->
Styled_message@1 = format_report(Report),
<<<<<<<<<<<<<<<<Styled_time/binary, " | "/utf8>>/binary,
Styled_level/binary>>/binary,
" | "/utf8>>/binary,
Styled_name/binary>>/binary,
" | "/utf8>>/binary,
Styled_message@1/binary>>/binary,
Error_string/binary>>/binary,
"\n"/utf8>>
end;
_ ->
gleam@io:println(<<"Using build in format"/utf8>>),
glimt@erlang_logger@common:built_in_format(Log_event, Config)
end.
-spec format_report(list({gleam@dynamic:dynamic(), gleam@dynamic:dynamic()})) -> binary().
format_report(Report) ->
Report_content = begin
_pipe = Report,
_pipe@1 = gleam@list:map(
_pipe,
fun(Entry) ->
{Key, Value} = case Entry of
{_, _} -> Entry;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"glimt/erlang_logger/basic_formatter"/utf8>>,
function => <<"format_report"/utf8>>,
line => 73})
end,
<<<<(glimt@erlang_logger@common:format_dynamic(Key))/binary,
" => "/utf8>>/binary,
(glimt@erlang_logger@common:format_dynamic(Value))/binary>>
end
),
gleam@string:join(_pipe@1, <<", "/utf8>>)
end,
<<<<"("/utf8, Report_content/binary>>/binary, ")"/utf8>>.
-spec format_name_and_pid(
gleam@option:option(binary()),
gleam@erlang@process:pid_()
) -> binary().
format_name_and_pid(Logger_name, Pid) ->
case Logger_name of
{some, Name} ->
<<<<<<Name/binary, "("/utf8>>/binary,
(gleam@erlang:format(Pid))/binary>>/binary,
")"/utf8>>;
none ->
gleam@erlang:format(Pid)
end.
-spec style_level(glimt@erlang_logger@level:level()) -> fun((binary()) -> binary()).
style_level(Log_level) ->
case Log_level of
emergency ->
glimt@style:style_fatal();
alert ->
glimt@style:style_fatal();
critical ->
glimt@style:style_fatal();
error ->
glimt@style:style_error();
warning ->
glimt@style:style_warning();
notice ->
glimt@style:style_info();
info ->
glimt@style:style_debug();
debug ->
glimt@style:style_trace()
end.