-- | Extended @log-warper@ functionality to work with importify tool. 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 -- | Initializes importify logger. initImportifyLogger :: MonadIO m => Severities -> m () initImportifyLogger = setupLogging Nothing . importifyLoggerConfig withImportify :: LoggerNameBox m a -> m a withImportify = usingLoggerName "importify" -- | Prints 'System.Wlog.Debug' message. printDebug :: MonadIO m => Text -> m () printDebug = liftIO . withImportify . logDebug -- | Prints 'Info' message. printInfo :: MonadIO m => Text -> m () printInfo = liftIO . withImportify . logInfo -- | Prints 'Notice' message. printNotice :: MonadIO m => Text -> m () printNotice = liftIO . withImportify . logNotice -- | Prints 'Warning' message. printWarning :: MonadIO m => Text -> m () printWarning = liftIO . withImportify . logWarning -- | Prints 'Error' message. printError :: MonadIO m => Text -> m () printError = liftIO . withImportify . logError