import System.IO (stdout)
-- from hslogger
import System.Log.Handler (setFormatter)
import System.Log.Handler.Simple (streamHandler)
import System.Log.Logger
-- from hslogger-colorfmt
import System.Log.Color
import System.Log.Color.Formatter
import System.Log.Util
n :: String
n = "mylogger"
msgFormat :: String
msgFormat = "$time $loggername $padPrio: $msg"
initLogging :: String -> Maybe Priority -> IO ()
initLogging loggerName mLogPriority = do
-- Removes the root logger's default handler that writes every
-- message to stderr!
updateGlobalLogger rootLoggerName removeHandler
case mLogPriority of
Nothing -> pure ()
(Just logPriority) -> do
updateGlobalLogger loggerName . addHandler
. flip setFormatter (colorLogFormatter colors16 msgFormat)
=<< streamHandler stdout DEBUG
updateGlobalLogger loggerName $ setLevel logPriority
main :: IO ()
main = do
putStrLn "------------------------------------------"
-- Example of completely turning off logging
alertM n "This ALERT message is visible because of hslogger's default settings"
alertM n "which is WARNING or higher and output to stderr."
alertM n "We almost never want this. Getting rid of it:\n"
putStrLn " initLogging n Nothing\n"
initLogging n Nothing
emergencyM n "This message should never be shown"
putStrLn "------------------------------------------"
putStrLn "Example of color logging with padded Priority:\n"
putStrLn " initLogging n $ Just DEBUG\n"
initLogging n $ Just DEBUG
logTest n