[Index] For package maintainers and hackage trustees

logging, mit, Propose Tags , Rollbar, Rollbar.MonadLogger
cabal install rollbar-1.1.2



send error notifications to rollbar.com

I have used a few different error notification services.

Rollbar has:

  • good support for client-side javascript errors
  • a nice UI
  • a complete feature set (for me at least)


Below is some example Yesod code. Integration should be similar elsewhere:

  1. (optional) save Settings at startup
  2. have a global exception handler that notifies Rollbar
-- initialization code
-- in Yesod, this is in makeFoundation in Application.hs
    hn <- getHostName
    let rc = Rollbar.Settings
               { Rollbar.environment = Rollbar.Environment $ tshow $ appEnv conf
               , Rollbar.token =
                     Rollbar.ApiToken $ rollbarApiKeyServer $ appExtra conf
               , Rollbar.hostName = hn
    -- put rc into the foundation type

-- using in a global exception handler
-- in Yesod, this is in the Yesod typeclass in Foundation.hs
import qualified Rollbar
import Rollbar.MonadLogger (reportErrorS)

-- Add a field to the foundation data type
data App = App {
  , appRollbar :: Rollbar.Settings

errorHandler err@(InternalError e) = do
    app <- getYesod
    -- forking means error reporting to Rollbar won't hold up
    -- the response to the client
    unless development $ forkHandler ($logErrorS "errorHandler" . tshow) $ do
        muser <- maybeAuth
        let rollbarPerson (Entity uid user) =
                 { Rollbar.id       = toPathPiece uid
                 , Rollbar.username = Nothing
                 , Rollbar.email    = Just $ emailToText $ userEmail user
        let rPerson = fmap rollbarPerson muser
        reportErrorS (appRollbar app)
                     (Rollbar.Options rPerson Nothing)
                     ($logDebugS) e
    defaultErrorHandler err 

errorHandler err = defaultErrorHandler err