Honeybadger v0.6.2 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",
    environment_name: :prod,
    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 exception monitoring 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 By default the logger is enabled. The logger will automatically receive any error reports for SASL compliant processes such as GenServers, GenEvents, Agents, Tasks and any process spawned using proc_lib. You can disable the logger by setting use_logger to false in your Honeybadger config.

Summary

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

Functions

context()
context(dict)
do_notify(exception, metadata, 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.

Macros

notify(exception)
notify(exception, metadata)
notify(exception, metadata, stacktrace)