mqtt-hs-0.2.0: Network/MQTT/Logger.hs
{-|
Module: MQTT.Logger
Copyright: Lukas Braun 2014
License: GPL-3
Maintainer: koomi+mqtt@hackerspace-bamberg.de
A simple logger abstraction.
-}
module Network.MQTT.Logger where
import System.IO
-- | Absract logger with three levels of importance.
data Logger
= Logger
{ logInfo :: String -> IO ()
, logWarning :: String -> IO ()
, logError :: String -> IO ()
}
-- | 'logInfo' prints to stdout, 'logWarning' and 'logError' to stderr
-- (with [Warning]/[Error] prefix)
stdLogger :: Logger
stdLogger = Logger
putStrLn
(\msg -> hPutStrLn stderr $ "[Warning] " ++ msg)
(\msg -> hPutStrLn stderr $ "[Error] " ++ msg)
-- | Log only warnings and errors, ignoring anything passed to 'logInfo'.
warnings :: Logger -> Logger
warnings l = l { logInfo = ignore }
-- | Like 'warnings', but logs only errors.
errors :: Logger -> Logger
errors l = l { logInfo = ignore, logWarning = ignore }
-- | Ignore the message.
ignore :: String -> IO ()
ignore _ = return ()