hslogger-template-2.0.4: Automatic generation of hslogger functions

Safe HaskellNone
LanguageHaskell98

System.Log.Logger.TH

Description

This module provides functions that generate hslogger functions using Template Haskell.

Notes:

  • System.Log.Logger must be imported qualified, and the qualifier must match the qualifier given to deriveLoggers and/or deriveNamedLoggers.
  • Don't forget to enable Template Haskell preprocessing: specify the pragma LANGUAGE TemplateHaskell at the top of your source file or extensions: TemplateHaskell in your cabal file.

Synopsis

Documentation

deriveLoggers Source #

Arguments

:: String

Must match qualifier on import of System.Log.Logger.

-> [Priority]

List of priorities for which to generate logging functions.

-> Q [Dec] 

Generate hslogger functions for a list of priorities.

Example usage:

module Foo.Bar ( ... ) where

import System.Log.Logger.TH (deriveLoggers)
import qualified System.Log.Logger as HSL

$(deriveLoggers "HSL" [HSL.DEBUG, HSL.INFO])

Used this way, deriveLoggers would generate the following functions:

infoM :: MonadIO m => String -> m ()
infoM s = liftIO (HSL.infoM "Foo.Bar" s)

debugM :: MonadIO m => String -> m ()
debugM s = liftIO (HSL.debugM "Foo.Bar" s)

The other hslogger priorities follow the same pattern.

In versions prior to 2.0.0, hslogger-template generated functions that prepended the module name to the log message. I no longer feel that this is correct behavior. Instead, please make use of hslogger's formatting functionality. Example:

import System.IO (stderr)

import System.Log.Formatter      (simpleLogFormatter)
import System.Log.Logger         (rootLoggerName)
import System.Log.Handler        (setFormatter)
import System.Log.Handler.Simple (streamHandler)
import System.Log.Logger.TH      (deriveLoggers)

import qualified System.Log.Logger as HSL

$(deriveLoggers "HSL" [HSL.DEBUG, HSL.INFO])

handler <- streamHandler stderr HSL.DEBUG >>= \h -> return $
  setFormatter h $ simpleLogFormatter "$time $loggername $prio $msg"
HSL.updateGlobalLogger rootLoggerName (HSL.setLevel HSL.DEBUG . HSL.setHandlers [handler])

deriveNamedLoggers Source #

Arguments

:: String

Message prefix, e.g., "SomeProgram: ".

-> String

Must match qualifier on import of System.Log.Logger.

-> [Priority]

List of priorities for which to generate logging functions.

-> Q [Dec] 

Like deriveLoggers, but allows you to specify a message prefix to be automatically prepended to every log message.