module Logging ( init_logging, log_debug, log_error, log_info, log_warning ) where import System.Log.Handler.Simple ( fileHandler ) import System.Log.Handler.Syslog ( Facility ( USER ), Option ( PID ), openlog ) import System.Log.Logger ( Priority ( DEBUG, INFO ), debugM, errorM, infoM, rootLoggerName, setHandlers, setLevel, updateGlobalLogger, warningM ) log_debug :: String -> IO () log_debug = debugM rootLoggerName log_error :: String -> IO () log_error = errorM rootLoggerName log_info :: String -> IO () log_info = infoM rootLoggerName log_warning :: String -> IO () log_warning = warningM rootLoggerName init_logging :: FilePath -> Priority -> Bool -> IO () init_logging log_file log_level syslog | syslog == True = do handler <- openlog rootLoggerName [PID] USER level updateGlobalLogger rootLoggerName (setLevel level . setHandlers [handler]) | otherwise = do handler <- fileHandler log_file level updateGlobalLogger rootLoggerName (setLevel level . setHandlers [handler]) where min_level = if syslog then INFO else DEBUG level = if log_level < min_level then min_level else log_level