Current section

Files

Jump to
glimt src glimt@serializer@basic.erl
Raw

src/glimt@serializer@basic.erl

-module(glimt@serializer@basic).
-compile([no_auto_import, nowarn_unused_vars]).
-export([level_symbol/1, basic_serializer/1]).
-spec level_symbol(glimt@log_message:log_level()) -> binary().
level_symbol(Log_level) ->
case Log_level of
all ->
<<"ALL"/utf8>>;
trace ->
<<"🔍"/utf8>>;
debug ->
<<"🐛"/utf8>>;
info ->
<<"ℹ️"/utf8>>;
warning ->
<<"⚠️"/utf8>>;
error ->
<<"❌"/utf8>>;
fatal ->
<<"🔥"/utf8>>;
none ->
<<"NONE"/utf8>>
end.
-spec style_level(glimt@log_message:log_level()) -> fun((binary()) -> binary()).
style_level(Log_level) ->
case Log_level of
all ->
glimt@style:style_plain();
trace ->
glimt@style:style_trace();
debug ->
glimt@style:style_debug();
info ->
glimt@style:style_info();
warning ->
glimt@style:style_warning();
error ->
glimt@style:style_error();
fatal ->
glimt@style:style_fatal();
none ->
glimt@style:style_plain()
end.
-spec full_name(
binary(),
gleam@erlang@process:pid_(),
gleam@option:option(binary()),
gleam@option:option(gleam@erlang@process:pid_())
) -> binary().
full_name(Name, Pid, Instance_name, Instance_pid) ->
case {Instance_name, Instance_pid} of
{{some, Instance_name@1}, {some, Instance_pid@1}} ->
<<<<<<<<<<<<<<Name/binary, "("/utf8>>/binary,
(gleam@erlang:format(Pid))/binary>>/binary,
")/"/utf8>>/binary,
Instance_name@1/binary>>/binary,
"("/utf8>>/binary,
(gleam@erlang:format(Instance_pid@1))/binary>>/binary,
")"/utf8>>;
{{some, Instance_name@2}, none} ->
<<<<<<<<Name/binary, "("/utf8>>/binary,
(gleam@erlang:format(Pid))/binary>>/binary,
")/"/utf8>>/binary,
Instance_name@2/binary>>;
{none, {some, Instance_pid@2}} ->
<<<<<<<<<<<<<<Name/binary, "("/utf8>>/binary,
(gleam@erlang:format(Pid))/binary>>/binary,
")/"/utf8>>/binary,
"???"/utf8>>/binary,
"("/utf8>>/binary,
(gleam@erlang:format(Instance_pid@2))/binary>>/binary,
")"/utf8>>;
{none, none} ->
<<<<<<Name/binary, "("/utf8>>/binary,
(gleam@erlang:format(Pid))/binary>>/binary,
")"/utf8>>
end.
-spec basic_serializer(
glimt@log_message:log_message(any(), any(), gleam@dynamic:dynamic())
) -> binary().
basic_serializer(Log_message) ->
{log_message,
Time,
Name,
Pid,
Instance_name,
Instance_pid,
Level,
_,
Message,
Error,
_,
_} = case Log_message of
{log_message, _, _, _, _, _, _, _, _, _, _, _} -> Log_message;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"glimt/serializer/basic"/utf8>>,
function => <<"basic_serializer"/utf8>>,
line => 63})
end,
Styled_time = glimt@style:style_time(Time),
Styled_level = begin
_pipe = glimt@log_message:level_string(Level),
(style_level(Level))(_pipe)
end,
Styled_message = Message,
Error_string = case Error of
{some, Err} ->
<<" | "/utf8, (gleam@string:inspect(Err))/binary>>;
none ->
<<""/utf8>>
end,
Styled_name = begin
_pipe@1 = Name,
_pipe@2 = full_name(_pipe@1, Pid, Instance_name, Instance_pid),
glimt@style:style_name(_pipe@2)
end,
<<<<<<<<<<<<<<Styled_time/binary, " | "/utf8>>/binary, Styled_level/binary>>/binary,
" | "/utf8>>/binary,
Styled_name/binary>>/binary,
" | "/utf8>>/binary,
Styled_message/binary>>/binary,
Error_string/binary>>.