tholschuh / erlhoptoad

Erlang Hoptoad notification client

Home Page:http://github.com/kenpratt/erlhoptoad

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

erlhoptoad

An Erlang client for the Hoptoad exception notification service.

Requirements

Usage

1. Sign up for Hoptoad
2. Create a Hoptoad project, and copy the API key
3. Proceed with “Running the Erlhoptoad application” or “Embedding Erlhoptoad in an existing application”

Running the Erlhoptoad application

1. Compile erlhoptoad: cd path/to/erlhoptoad/ && make
2. Start the erlhoptoad application, replacing the API key with your own:

ERL_LIBS="path/to/ibrowse:path/to/erlhoptoad:$ERL_LIBS" erl -erlhoptoad apikey '"76fdb93ab2cf276ec080671a8b3d3866"' -erlhoptoad error_logger true -erlhoptoad environment '"development"' -s erlhoptoad start

3. Try generating a couple of error reports:

1> hoptoad:notify(error, fake, "Testing erlhoptoad with a manual error report", no_module, 0).
ok
2> error_logger:error_msg("A sample error caught by the erlhoptoad error logger.").
...

4. Configure erlhoptoad: three configuration options are supported: apikey, environment, and error_logger

  • apikey – Set this to the API key of your Hoptoad project (String).
  • environment – The Hoptoad environment that errors will be reported under (String).
  • error_logger – Set to true to enable the erlhoptoad error_logger (Boolean). The erlhoptoad error logger will intergrate with the existing Erlang/OTP error logging, notifying hoptoad of any runtime errors in your application. The upside is that it can catch things that manual hoptoad notification can’t.

These configuration options can be set in ebin/erlhoptoad.app, or configured on the command line as in the above example.

Embedding Erlhoptoad in an existing application

1. Add hoptoad to your application supervision tree:

{hoptoad,
    {hoptoad, start_link, ["production", "76fdb93ab2cf276ec080671a8b3d3866"]},
    permanent, 5000, worker, dynamic}.

2. Add hoptoad hooks:

case calculate_something() of
    {ok, Value} ->
        Value;
    Error = {error, Reason} ->
        hoptoad:notify(error, Reason, "Frobber calculation failed", ?MODULE, ?LINE)
end.

and/or:

try do_stuff() of
    Value ->
        Value
catch
    Type:Reason ->
        hoptoad:notify(Type, Reason, "Ahhh! Stuff is not good!", ?MODULE, ?LINE, erlang:get_stacktrace())
end.

3. Compile erlhoptoad: cd path/to/erlhoptoad/ && make
4. Add the erlhoptoad ebin directory to your Erlang path: -pa path/to/erlhoptoad/ebin
5. Start ibrowse during your application startup: application:start(ibrowse)
6. Test it out!
7. (Optional) Add the erlhoptoad error logger to your application startup:

error_logger:add_report_handler(erlhoptoad_error_logger)

Macro

A macro similar to this is likely useful to avoid duplication:

-define(NOTIFY_HOPTOAD(Type, Reason, Message),
        hoptoad:notify(Type, Reason, Message, ?MODULE, ?LINE, erlang:get_stacktrace())).

If you already have a macro to log errors, just add it to that :)

About

Erlang Hoptoad notification client

http://github.com/kenpratt/erlhoptoad

License:MIT License


Languages

Language:Erlang 100.0%