jobqueue-0.1.3: src/Network/JobQueue/Logger.hs
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE OverloadedStrings #-}
module Network.JobQueue.Logger
( logDebug
, logInfo
, logWarn
, logError
, logNotice
, logCritical
, Only
) where
import qualified Data.Text as T
import qualified Data.Text.Lazy as LT
import qualified Control.Monad.Logger as ML
import Language.Haskell.TH.Syntax (Q, Exp, qLocation)
import Data.Text.Format
logTH :: ML.LogLevel -> Q Exp
logTH level = [|\a b -> ML.monadLoggerLog $(qLocation >>= ML.liftLoc) (T.pack "") level (LT.toStrict $ format (a :: Format) b)|]
logDebug :: Q Exp
logDebug = logTH ML.LevelDebug
logInfo :: Q Exp
logInfo = logTH ML.LevelInfo
logWarn :: Q Exp
logWarn = logTH ML.LevelWarn
logError :: Q Exp
logError = logTH ML.LevelError
logNotice :: Q Exp
logNotice = logTH (ML.LevelOther "notice")
logCritical :: Q Exp
logCritical = logTH (ML.LevelOther "critical")