improve logger

This commit is contained in:
shibao 2023-02-07 00:14:20 -05:00 committed by oliviasculley
parent 8ef3bd65a3
commit 56dae6cdfe
2 changed files with 23 additions and 17 deletions

View File

@ -4,7 +4,7 @@ defmodule Lokal.Application do
@moduledoc false @moduledoc false
use Application use Application
alias Lokal.ErrorReporter alias Lokal.Logger
@impl true @impl true
def start(_type, _args) do def start(_type, _args) do
@ -33,7 +33,7 @@ defmodule Lokal.Application do
[:oban, :job, :start], [:oban, :job, :start],
[:oban, :job, :stop] [:oban, :job, :stop]
], ],
&ErrorReporter.handle_event/4, &Logger.handle_event/4,
[] []
) )

View File

@ -1,4 +1,4 @@
defmodule Lokal.ErrorReporter do defmodule Lokal.Logger do
@moduledoc """ @moduledoc """
Custom logger for telemetry events Custom logger for telemetry events
@ -12,41 +12,47 @@ defmodule Lokal.ErrorReporter do
data = data =
get_oban_job_data(meta, measure) get_oban_job_data(meta, measure)
|> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace)) |> Map.put(:stacktrace, Exception.format_stacktrace(stacktrace))
|> pretty_encode()
Logger.error(meta.reason, data: pretty_encode(data)) Logger.error(meta.reason, data: data)
end end
def handle_event([:oban, :job, :start], measure, meta, _config) do def handle_event([:oban, :job, :start], measure, meta, _config) do
Logger.info("Started oban job", data: get_oban_job_data(meta, measure) |> pretty_encode()) data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Started oban job", data: data)
end end
def handle_event([:oban, :job, :stop], measure, meta, _config) do def handle_event([:oban, :job, :stop], measure, meta, _config) do
Logger.info("Finished oban job", data: get_oban_job_data(meta, measure) |> pretty_encode()) data = get_oban_job_data(meta, measure) |> pretty_encode()
Logger.info("Finished oban job", data: data)
end end
def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do def handle_event([:oban, :job, unhandled_event], measure, meta, _config) do
data = data =
get_oban_job_data(meta, measure) get_oban_job_data(meta, measure)
|> Map.put(:event, unhandled_event) |> Map.put(:event, unhandled_event)
|> pretty_encode()
Logger.warning("Unhandled oban job event", data: pretty_encode(data)) Logger.warning("Unhandled oban job event", data: data)
end end
def handle_event(unhandled_event, measure, meta, config) do def handle_event(unhandled_event, measure, meta, config) do
data = %{ data =
pretty_encode(%{
event: unhandled_event, event: unhandled_event,
meta: meta, meta: meta,
measurements: measure, measurements: measure,
config: config config: config
} })
Logger.warning("Unhandled telemetry event", data: pretty_encode(data)) Logger.warning("Unhandled telemetry event", data: data)
end end
defp get_oban_job_data(%{job: job}, measure) do defp get_oban_job_data(%{job: job}, measure) do
job %{
|> Map.take([:id, :args, :meta, :queue, :worker]) job: job |> Map.take([:id, :args, :meta, :queue, :worker]),
|> Map.merge(measure) measurements: measure
}
end end
defp pretty_encode(data) do defp pretty_encode(data) do