diff --git a/lib/tower/logger_handler.ex b/lib/tower/logger_handler.ex index 738a2e2..14b58a9 100644 --- a/lib/tower/logger_handler.ex +++ b/lib/tower/logger_handler.ex @@ -95,6 +95,12 @@ defmodule Tower.LoggerHandler do end end + def log(%{level: level, msg: {:report, report}, meta: meta}, _config) do + if should_handle?(level) do + Tower.handle_message(level, report, meta) + end + end + def log(log_event, _config) do IO.puts( "[Tower.LoggerHandler] UNHANDLED LOG EVENT log_event=#{inspect(log_event, pretty: true)}" diff --git a/test/tower_test.exs b/test/tower_test.exs index 6890721..7ba7892 100644 --- a/test/tower_test.exs +++ b/test/tower_test.exs @@ -211,6 +211,26 @@ defmodule TowerTest do ) end + @tag capture_log: true + test "reports a Logger structured report" do + in_unlinked_process(fn -> + require Logger + Logger.critical(something: :reported, this: :critical) + end) + + assert( + [ + %{ + time: _, + level: :critical, + kind: nil, + reason: [something: :reported, this: :critical], + stacktrace: [] + } + ] = reported_events() + ) + end + defp in_unlinked_process(fun) when is_function(fun, 0) do {:ok, pid} = Task.Supervisor.start_link()