-module(glimt@erlang_logger@basic_formatter). -compile([no_auto_import, nowarn_unused_vars]). -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_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} -> <<<<<>/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. -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, <<<<<<<<<<<<<<<>/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), <<<<<<<<<<<<<<<>/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.