packages feed

hslogger-template-2.0.0: src/test.hs

{-# LANGUAGE TemplateHaskell #-}

module Main (main) where

import System.IO (stderr)

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

import qualified System.Log.Logger as HSL

$(deriveLoggers "HSL" [HSL.DEBUG, HSL.INFO, HSL.NOTICE, HSL.WARNING, HSL.ERROR, HSL.CRITICAL, HSL.ALERT, HSL.EMERGENCY])

main :: IO ()
main = do
    handler <- streamHandler stderr HSL.DEBUG >>= \h -> return $
      setFormatter h $ simpleLogFormatter "$loggername $prio $msg"
    HSL.updateGlobalLogger rootLoggerName (HSL.setLevel HSL.DEBUG . HSL.setHandlers [handler])
    mapM_ (\(f, fn) -> f fn) (zip functions functionNames)
  where
    functions     = [debugM, infoM, noticeM, warningM, errorM, criticalM, alertM, emergencyM]
    functionNames = ["debugM", "infoM", "noticeM", "warningM", "errorM", "criticalM", "alertM", "emergencyM"]