Current section
Files
Jump to
Current section
Files
src/libero@ws_logger.erl
-module(libero@ws_logger).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/libero/ws_logger.gleam").
-export([default_logger/0]).
-export_type([logger/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" Logger type used by generated WebSocket handlers.\n"
"\n"
" Consumers pass a Logger value into `ws.upgrade` so the\n"
" generated handler can emit structured log messages without\n"
" libero needing to know about any particular logging backend.\n"
).
-type logger() :: {logger,
fun((binary()) -> nil),
fun((binary()) -> nil),
fun((binary()) -> nil)}.
-file("src/libero/ws_logger.gleam", 20).
?DOC(
" Default logger that prints debug messages to stdout and\n"
" warning/error messages to stderr. Suitable for examples and local\n"
" development; replace with a real structured logger in production.\n"
).
-spec default_logger() -> logger().
default_logger() ->
{logger,
fun(Msg) -> gleam_stdlib:println(<<"[debug] "/utf8, Msg/binary>>) end,
fun(Msg@1) ->
gleam_stdlib:println_error(<<"[warning] "/utf8, Msg@1/binary>>)
end,
fun(Msg@2) ->
gleam_stdlib:println_error(<<"[error] "/utf8, Msg@2/binary>>)
end}.