module Extended.System.Wlog
( initImportifyLogger
, printDebug
, printError
, printInfo
, printNotice
, printWarning
) where
import Universum
import Lens.Micro.Platform (zoom, (.=), (?=))
import System.Wlog (LoggerConfig, LoggerNameBox, Severities, lcShowTime, lcTree, logDebug, logError,
logInfo, logNotice, logWarning, ltSeverity, productionB, setupLogging,
usingLoggerName, warningPlus, zoomLogger)
importifyLoggerConfig :: Severities -> LoggerConfig
importifyLoggerConfig importifySeverities = executingState productionB $ do
lcShowTime .= Any False
zoom lcTree $ do
ltSeverity ?= warningPlus
zoomLogger "importify" $
ltSeverity ?= importifySeverities
initImportifyLogger :: MonadIO m => Severities -> m ()
initImportifyLogger = setupLogging Nothing . importifyLoggerConfig
withImportify :: LoggerNameBox m a -> m a
withImportify = usingLoggerName "importify"
printDebug :: MonadIO m => Text -> m ()
printDebug = liftIO . withImportify . logDebug
printInfo :: MonadIO m => Text -> m ()
printInfo = liftIO . withImportify . logInfo
printNotice :: MonadIO m => Text -> m ()
printNotice = liftIO . withImportify . logNotice
printWarning :: MonadIO m => Text -> m ()
printWarning = liftIO . withImportify . logWarning
printError :: MonadIO m => Text -> m ()
printError = liftIO . withImportify . logError