module Logging ( init_logging, log_debug, log_error, log_info, log_warning ) where import System.Log.Handler.Simple ( GenericHandler ) 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 :: Bool -> IO () init_logging use_syslog = do let max_level = if use_syslog then INFO else DEBUG -- We need to specify the type here; otherwise, setHandlers won't -- accept the empty list as an instance of [LogHandler a]. let no_handlers = [] :: [GenericHandler a] -- Removes the default "echo to stdout" handler. updateGlobalLogger rootLoggerName (setLevel max_level . setHandlers no_handlers)