Current section

Files

Jump to
bugsnag lib bugsnag logger.ex
Raw

lib/bugsnag/logger.ex

defmodule Bugsnag.Logger do
require Bugsnag
require Logger
@behaviour :gen_event
def init([]), do: {:ok, []}
def handle_call({:configure, new_keys}, _state) do
{:ok, :ok, new_keys}
end
def handle_event({_level, gl, _event}, state)
when node(gl) != node() do
{:ok, state}
end
def handle_event({:error_report, _gl, {_pid, _type, [message | _]}}, state)
when is_list(message) do
try do
error_info = message[:error_info]
case error_info do
{_kind, {exception, stacktrace}, _stack} when is_list(stacktrace) ->
Bugsnag.report(exception, stacktrace: stacktrace)
{_kind, exception, stacktrace} ->
Bugsnag.report(exception, stacktrace: stacktrace)
end
rescue
ex ->
error_message = Exception.format(:error, ex)
Logger.warn("Unable to notify Bugsnag. #{error_message}")
end
{:ok, state}
end
def handle_event({_level, _gl, _event}, state) do
{:ok, state}
end
end