Rollbax v0.11.0 Rollbax View Source
This module provides functions to report any kind of exception or message to Rollbar.
Configuration
The :rollbax application needs to be configured properly in order to
work. This configuration can be done, for example, in config/config.exs:
config :rollbax,
access_token: "9309123491",
environment: "production"
The following is a comprehensive list of configuration options supported by Rollbax:
:access_token- (binary ornil) the token needed to access the Rollbar Items API (POST). As of now, Rollbar provides several access tokens for different “parts” of their API: for this configuration option, the"post_server_item"access token is needed. This option is required only when the:enabledoption is set totrue, and can benilotherwise.:environment- (binary) the environment that will be attached to each reported exception.:enabled- (true | false | :log) decides whether things reported withreport/5orreport_message/4are actually reported to Rollbar. Iftrue, they are reported; iffalse,report/5andreport_message/4don’t do anything; if:log, things reported withreport/5andreport_message/4are instead logged to the shell.:custom- (map) a map of any arbitrary metadata you want to attach to everything reported by Rollbax. If custom data is specified in an individual call toreport/5orreport_message/5it will be merged with the global data, with the individual data taking precedence in case of conflicts. Defaults to%{}.:api_endpoint- (binary) the Rollbar endpoint to report exceptions and messages to. Defaults tohttps://api.rollbar.com/api/1/item/.:enable_crash_reports- seeRollbax.Logger.:reporters- seeRollbax.Logger.:proxy- (binary) a proxy that can be used to connect to the Rollbar host. For more information about the format of the proxy, check the proxy URL description in the hackney documentation.
Runtime configuration
Configuration can be modified at runtime by providing a configuration callback, like this:
config :rollbax,
config_callback: {MyModule, :my_function}
In the example above, MyModule.my_function/1 will be called with the existing configuration as
an argument. It’s supposed to return a keyword list representing a possibly modified
configuration. This can for example be used to read system environment variables at runtime when
the application starts:
defmodule MyModule do
def my_function(config) do
Keyword.put(config, :access_token, System.get_env("ROLLBAR_ACCESS_TOKEN"))
end
end
Logger backend
Rollbax provides a module that reports logged crashes and exits to Rollbar. For more
information, look at the documentation for Rollbax.Logger.
Link to this section Summary
Link to this section Functions
report(:error | :exit | :throw, any(), [any()], map(), map()) :: :ok
Reports the given error/exit/throw.
kind specifies the kind of exception being reported while value specifies
the value of that exception. kind can be:
:error- reports an exception defined withdefexception.valuemust be an exception, or this function will raise anArgumentErrorexception.:exit- reports an exit.valuecan be any term.:throw- reports a thrown term.valuecan be any term.
The custom and occurrence_data arguments can be used to customize metadata
sent to Rollbar. custom is a map of any arbitrary metadata you want to
attach to the exception being reported. occurrence_data is a map of
key-value pairs where keys and values should be understood by the Rollbar
POST API for items; for example, as
of now Rollbar understands the "person" field and uses it to display users
which an exception affected: occurrence_data can be used to attach
"person" data to an exception being reported. Refer to the Rollbar API
(linked above) for what keys are supported and what the corresponding values
should be.
This function is fire-and-forget: it will always return :ok right away and
perform the reporting of the given exception in the background so as to not block
the caller.
Examples
Exceptions can be reported directly:
Rollbax.report(:error, ArgumentError.exception("oops"), System.stacktrace())
#=> :ok
Often, you’ll want to report something you either rescued or caught. For rescued exceptions:
try do
raise ArgumentError, "oops"
rescue
exception ->
Rollbax.report(:error, exception, System.stacktrace())
# You can also reraise the exception here with reraise/2
end
For caught exceptions:
try do
throw(:oops)
# or exit(:oops)
catch
kind, value ->
Rollbax.report(kind, value, System.stacktrace())
end
Using custom data:
Rollbax.report(:exit, :oops, System.stacktrace(), %{"weather" => "rainy"})
report_message(:critical | :error | :warning | :info | :debug, IO.chardata(), map(), map()) :: :ok
Reports the given message.
message will be reported as a simple Rollbar message, for example, without a stacktrace.
level is the level of the message, which can be one of:
:critical:error:warning:info:debug
custom and occurrence_data work exactly like they do in report/5.
Examples
Rollbax.report_message(:critical, "Everything is on fire!")
#=> :ok