photoname-5.0: src/lib/Photoname/Log.hs
module Photoname.Log
( initLogging
, lname
, logTest
-- Re-exported from System.Log
, debugM, infoM, noticeM, warningM, errorM, criticalM, alertM, emergencyM
)
where
import System.IO ( Handle, stdout )
import System.Log.Handler.Simple ( GenericHandler, streamHandler )
import System.Log.Logger
import Photoname.Common ( Verbosity (Quiet, Verbose) )
lname :: String
lname = rootLoggerName
initLogging :: Verbosity -> IO ()
initLogging verbosity = do
updateGlobalLogger lname . setHandlers =<< handlers verbosity
case verbosity of
Quiet -> pure ()
Verbose loggerLevel -> updateGlobalLogger lname $ setLevel loggerLevel
handlers :: Verbosity -> IO [GenericHandler Handle]
handlers Quiet = pure []
handlers (Verbose _) = sequence [streamHandler stdout DEBUG]
-- Test function to generate every kind of log message
logTest :: IO ()
logTest = do
debugM lname "log test message DEBUG 1 of 8"
infoM lname "log test message INFO 2 of 8"
noticeM lname "log test message NOTICE 3 of 8"
warningM lname "log test message WARNING 4 of 8"
errorM lname "log test message ERROR 5 of 8"
criticalM lname "log test message CRITICAL 6 of 8"
alertM lname "log test message ALERT 7 of 8"
emergencyM lname "log test message EMERGENCY 8 of 8"