MIT licensed by Patrick Brisbin
Maintained by [email protected]
This version can be pinned in stack with:bugsnag-1.0.0.1@sha256:a5b7afd9ff5bab322c1ce267ff0645afd7072071371462a0335f550609aa2546,4412

Bugsnag error reporter for Haskell

Catch exceptions in your Haskell code and report then to Bugsnag.

Configuration

let settings = defaultSettings "A_BUGSNAG_API_KEY"

Manual Reporting

Data.Bugsnag.Exception is the type of actual exceptions included in the event reported to Bugsnag. Constructing it directly can be useful to attach the current source location as a stack frame.

let
  ex = defaultException
    { exception_errorClass = "Error"
    , exception_message = Just "message"
    , exception_stacktrace = [$(currentStackFrame) "myFunction"]
    }

In order to treat it like an actual Haskell Exception (including to report it), wrap it in AsException:

notifyBugsnag settings $ AsException ex

Catching & Throwing

Catch any exceptions, notify, and re-throw:

myFunction `withException` notifyBugsnag @SomeException settings

Throw a manually-built exception:

throwIO $ AsException ex

Examples

Examples can be built locally with:

stack build --flag bugsnag:examples

bugsnag-hs

We depend on bugsnag-hs to define the types for the full reporting API payload. Unfortunately, it exposes them from its own Network.Bugsnag module, which conflicts with ourselves.

To get around this, we re-export that whole module as Data.Bugsnag. If you are currently depending on bugsnag-hs and wish to use our package too, we recommend you only depend on us and use its types through the Data.Bugsnag re-export.


CHANGELOG | LICENSE

Changes

Unreleased

  • None

v1.0.0.1

  • Support GHCs 9.0 and 9.2

v1.0.0.0

First released version.


For CHANGELOG details prior to the package re-organization, see archive/CHANGELOG.md.