packages feed

hslogger-colorfmt-1.0.0: src/examples/Main.hs

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