module Yam.Logger.MonadLogger(
toMonadLogger
, runLoggingT
) where
import Yam.Import
import Yam.Logger
import Control.Monad.Logger
type LogFunc = Loc -> LogSource -> LogLevel -> LogStr -> IO ()
toMonadLogger :: (Yam.Logger.MonadLogger m) => m LogFunc
toMonadLogger = mkLogger <$> loggerConfig
where toRank LevelDebug = DEBUG
toRank LevelInfo = INFO
toRank LevelWarn = WARN
toRank LevelError = ERROR
toRank _ = INFO
mkLogger :: LoggerConfig -> LogFunc
mkLogger context _ name level msg = runReaderT (withLoggerName name $ logL (toRank level) (msg <> "\n")) context