Current section
Files
Jump to
Current section
Files
src/olive@logging.erl
-module(olive@logging).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([get_logger/1, notice/2, warning/2, error/2]).
-export_type([logger/0, log_level/0]).
-opaque logger() :: {logger, integer()}.
-type log_level() :: none | error | warning | notice.
-file("src/olive/logging.gleam", 61).
-spec get_formatted_msg(binary(), binary(), binary()) -> binary().
get_formatted_msg(Acc, Msg, Format) ->
{New_line_prefix, Indent} = case Acc of
<<""/utf8>> ->
{<<""/utf8>>, <<" "/utf8>>};
_ ->
{<<"\n"/utf8>>, <<" "/utf8>>}
end,
<<<<<<New_line_prefix/binary, Format/binary>>/binary, Indent/binary>>/binary,
Msg/binary>>.
-file("src/olive/logging.gleam", 42).
-spec get_msg_format(log_level(), binary()) -> binary().
get_msg_format(Level, Msg) ->
gleam@bool:guard(Level =:= none, <<""/utf8>>, fun() -> _pipe = Msg,
_pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>),
gleam@list:fold(
_pipe@1,
<<""/utf8>>,
fun(Acc, Msg@1) ->
Formatted_msg = case Level of
none ->
<<""/utf8>>;
error ->
get_formatted_msg(
Acc,
Msg@1,
<<"\x{001b}[31;1mOLIVE - ERROR:\x{001b}[0m"/utf8>>
);
notice ->
get_formatted_msg(
Acc,
Msg@1,
<<"\x{001b}[32;1mOLIVE - NOTICE:\x{001b}[0m"/utf8>>
);
warning ->
get_formatted_msg(
Acc,
Msg@1,
<<"\x{001b}[33;1mOLIVE - WARNING:\x{001b}[0m"/utf8>>
)
end,
<<Acc/binary, Formatted_msg/binary>>
end
) end).
-file("src/olive/logging.gleam", 69).
-spec get_log_level_value(log_level()) -> integer().
get_log_level_value(Level) ->
case Level of
none ->
9000;
error ->
10;
warning ->
5;
notice ->
1
end.
-file("src/olive/logging.gleam", 19).
-spec get_logger(log_level()) -> logger().
get_logger(Level) ->
{logger, get_log_level_value(Level)}.
-file("src/olive/logging.gleam", 35).
-spec log(logger(), log_level(), binary()) -> nil.
log(Logger, Level, Msg) ->
case gleam@int:compare(
get_log_level_value(Level),
erlang:element(2, Logger)
) of
gt ->
gleam_stdlib:println(get_msg_format(Level, Msg));
eq ->
gleam_stdlib:println(get_msg_format(Level, Msg));
lt ->
nil
end.
-file("src/olive/logging.gleam", 23).
-spec notice(logger(), binary()) -> nil.
notice(Logger, Msg) ->
log(Logger, notice, Msg).
-file("src/olive/logging.gleam", 27).
-spec warning(logger(), binary()) -> nil.
warning(Logger, Msg) ->
log(Logger, warning, Msg).
-file("src/olive/logging.gleam", 31).
-spec error(logger(), binary()) -> nil.
error(Logger, Msg) ->
log(Logger, error, Msg).