Packages
Professional observability suite for Gleam: structured logging, metrics, and statistical benchmarking
Current section
Files
Jump to
Current section
Files
src/viva_telemetry@examples@log_example.erl
-module(viva_telemetry@examples@log_example).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/viva_telemetry/examples/log_example.gleam").
-export([main/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(
" Example: Using viva_telemetry/log\n"
"\n"
" Run: gleam run -m viva_telemetry/examples/log_example\n"
).
-file("src/viva_telemetry/examples/log_example.gleam", 11).
-spec main() -> nil.
main() ->
viva_telemetry@log:configure(
[viva_telemetry@log@handler:console_with_level(debug),
viva_telemetry@log@handler:json(<<"app.jsonl"/utf8>>)]
),
viva_telemetry@log:info(
<<"Server starting"/utf8>>,
[{<<"port"/utf8>>, <<"8080"/utf8>>}, {<<"env"/utf8>>, <<"dev"/utf8>>}]
),
viva_telemetry@log:debug(
<<"Config loaded"/utf8>>,
[{<<"file"/utf8>>, <<"config.toml"/utf8>>}]
),
viva_telemetry@log:warning(
<<"Deprecated API used"/utf8>>,
[{<<"endpoint"/utf8>>, <<"/v1/users"/utf8>>}]
),
viva_telemetry@log:error(
<<"Connection failed"/utf8>>,
[{<<"host"/utf8>>, <<"db.local"/utf8>>},
{<<"retries"/utf8>>, <<"3"/utf8>>}]
),
viva_telemetry@log:with_context(
[{<<"request_id"/utf8>>, <<"abc123"/utf8>>},
{<<"user_id"/utf8>>, <<"42"/utf8>>}],
fun() ->
viva_telemetry@log:info(<<"Processing request"/utf8>>, []),
viva_telemetry@log:debug(
<<"Fetching user data"/utf8>>,
[{<<"table"/utf8>>, <<"users"/utf8>>}]
),
viva_telemetry@log:info(
<<"Request completed"/utf8>>,
[{<<"status"/utf8>>, <<"200"/utf8>>}]
)
end
),
_pipe = gleam@list:range(1, 100),
gleam@list:each(
_pipe,
fun(I) ->
viva_telemetry@log:sampled(
debug,
0.1,
<<"High frequency event"/utf8>>,
[{<<"i"/utf8>>, erlang:integer_to_binary(I)}]
)
end
),
viva_telemetry@log:trace(<<"Very detailed trace"/utf8>>, []),
viva_telemetry@log:notice(<<"Something noteworthy"/utf8>>, []),
viva_telemetry@log:critical(<<"System critical!"/utf8>>, []),
viva_telemetry@log:alert(<<"Immediate action needed!"/utf8>>, []),
viva_telemetry@log:emergency(<<"System down!"/utf8>>, []),
viva_telemetry@log:info(<<"Demo completed!"/utf8>>, []).