Honeybadger
This module contains the notify macro and context function you can use in your applications.
### Configuring By default the HONEYBADGER_API_KEY environment variable is used to find your API key for Honeybadger. You can also manually set your API key by configuring the :honeybadger application. You can see the default configuration in the default_config/0 private function at the bottom of this file.
config :honeybadger,
api_key: "mysupersecretkey",
app: :my_app_name,
exclude_envs: [:dev, :test],
hostname: "myserver.domain.com",
origin: "https://api.honeybadger.io",
project_root: "/home/skynet",
use_logger: true,
### Notifying Honeybadger.notify is a macro so that it can be wiped away in environments that you don't need error tracking in such as dev and test. If you use the Plug and Logger included in this library you won't need to use Honeybadger.notify very often. Here is an example:
exception = %RuntimeError{message: "Oops"}
context = %{user_id: 1, account: "A Very Important Customer"}
{:current_stacktrace, stacktrace} = Process.info(self, :current_stacktrace)
Honeybadger.notify(exception, context, stacktrace)
### Setting Context You can add an arbitrary map of context that will get sent to the Honeybadger API when/if an exception occurs in that process. Do keep in mind the process dictionary is used for retrieving this context so try not to put large data structures in the context.
Honeybadger.context(user_id: 1, account: "My Favorite Customer")
Honeybadger.context(%{user_id: 2, account: "That Needy Customer")
### Using the Plug If you're using Phoenix, or any Plug-based Elixir web framework, you can use
the Honeybadger.Plug module in your Router and all exceptions in web requests will automatically be reported to Honeybadger.
defmodule MoneyPrinter.Router do
use MoneyPrinter.Web, :router
use Honeybadger.Plug
end
You can also automatically set useful context on every request by defining a Plug compatible function:
defmodule MoneyPrinter.Router do
use MoneyPrinter.Web, :router
use Honeybadger.Plug
plug :set_honeybadger_context
# your routes
defp set_honeybadger_context(conn, _opts) do
user = get_user(conn)
Honeybadger.context(user_id: user.id, account: user.account)
conn
end
end
### Using the error logger To use the logger all you need to do is set the use_logger
configuration option to true. This will automatically receive any error reports for SASL compliant processes such as GenServers, GenEvents, Agents, Tasks and any process spawned using proc_lib
.
Summary↑
context() | |
context(dict) | |
do_notify(exception, context, stacktrace) | |
notify(exception) | |
notify(exception, context) | |
notify(exception, context, stacktrace) | |
start(type, opts) | This is here as a callback to Application to configure and start the Honeybadger client's dependencies. You'll likely never need to call this function yourself |
Functions
This is here as a callback to Application to configure and start the Honeybadger client's dependencies. You'll likely never need to call this function yourself.