Packages
honeybadger
0.6.2
0.28.0
0.27.0
0.26.0
0.25.0
0.24.1
0.24.0
0.23.0
0.22.1
0.22.0
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.7.0-beta
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Elixir client, Plug and error_logger for integrating with the Honeybadger.io exception tracker"
Current section
Files
Jump to
Current section
Files
lib/honeybadger/logger.ex
defmodule Honeybadger.Logger do
alias Honeybadger.Utils
require Honeybadger
require Logger
use GenEvent
def init(_mod, []), 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]
context = get_in(message, [:dictionary, :honeybadger_context])
context = %{context: context}
case error_info do
{_kind, {exception, stacktrace}, _stack} when is_list(stacktrace) ->
Honeybadger.notify(exception, context, stacktrace)
{_kind, exception, stacktrace} ->
Honeybadger.notify(exception, context, stacktrace)
end
rescue
ex ->
error_type = Utils.strip_elixir_prefix(ex.__struct__)
reason = Exception.message(ex)
message = "Unable to notify Honeybadger! #{error_type}: #{reason}"
Logger.warn(message)
end
{:ok, state}
end
def handle_event({_level, _gl, _event}, state) do
{:ok, state}
end
end