HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Moduleraven-haskell-0.1.4.1Haskell2010

System.Log.Raven

Raven is a client for Sentry event server (https://www.getsentry.com/).

Start by initializing the raven Service:

l <- initRaven
         "https://pub:priv@sentry.hostname.tld:8443/sentry/example_project"
         id
         sendRecord
         stderrFallback

Send events using register function:

register l "my.logger.name" Debug "Hi there!" id

Tags and stuff can be added using register update functions.

import Data.HashMap.Strict as HM
let tags r = r { srTags = HM.insert "spam" "sausage"
                        . HM.insert "eggs" "bacon"
                        . srTags r }
lt <- initRaven dsn tags sendRecord stderrFallback

let culprit r = r { srCulprit = "my.module.function.name" }
register lt "test.culprit" Error "It's a trap!" culprit
let extra r = r { srExtra = HM.insert "fnord" "42" $ srExtra r }
register lt "test.extra" Info "Test with tags and extra, please ignore."

The core package provides only general interface for sending events which could be wrapped to adapt it to your needs.

let debug msg = forkIO $ register l "my.logger.name" Debug msg (culprit . extra)
debug "Async stuff too."

There are some little helpers to compose your own updaters. You can use them both in initRaven and register.

l <- initRaven dsn ( tags [ ("spam", "sausage"
                          , ("eggs", "bacon") ]
                   . extra [ ("more", "stuff") ]
                   )
                   sendRecord stderrFallback

register l "test.helpers" Info "yup, i'm here." $ culprit "java.lang.NotReally"
  • 11 values

Event service

3 declarations

Fallback handlers

3 declarations

Record updaters

3 declarations

Lower level helpers

2 declarations