module Blammo.Logging
( LogSettings
, LogLevel (..)
, LogDestination (..)
, LogFormat (..)
, LogColor (..)
, defaultLogSettings
, setLogSettingsLevels
, setLogSettingsDestination
, setLogSettingsFormat
, setLogSettingsColor
, setLogSettingsBreakpoint
, setLogSettingsConcurrency
, Logger
, HasLogger (..)
, withLogger
, newLogger
, runLoggerLoggingT
, Message (..)
, (.=)
, Series
, MonadMask
, withThreadContext
, myThreadContext
, Pair
, MonadLogger (..)
, MonadLoggerIO (..)
, LoggingT
, WithLogger (..)
, runWithLogger
, logDebug
, logInfo
, logWarn
, logError
, logOther
, LogSource
, logDebugNS
, logInfoNS
, logWarnNS
, logErrorNS
, logOtherNS
) where
import Blammo.Logging.LogSettings
import Blammo.Logging.Logger
import Blammo.Logging.WithLogger
import Control.Lens (view)
import Control.Monad.Catch (MonadMask)
import Control.Monad.IO.Unlift (MonadUnliftIO)
import Control.Monad.Logger.Aeson
import Data.Aeson (Series)
import Data.Aeson.Types (Pair)
import UnliftIO.Exception (finally)
runLoggerLoggingT
:: (MonadUnliftIO m, HasLogger env) => env -> LoggingT m a -> m a
runLoggerLoggingT :: forall (m :: * -> *) env a.
(MonadUnliftIO m, HasLogger env) =>
env -> LoggingT m a -> m a
runLoggerLoggingT env
env LoggingT m a
f =
LoggingT m a
-> (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a
forall (m :: * -> *) a.
LoggingT m a
-> (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a
runLoggingT LoggingT m a
f (Logger -> Loc -> LogSource -> LogLevel -> LogStr -> IO ()
forall (m :: * -> *) msg.
(MonadIO m, ToLogStr msg) =>
Logger -> Loc -> LogSource -> LogLevel -> msg -> m ()
runLogAction Logger
logger) m a -> m () -> m a
forall (m :: * -> *) a b. MonadUnliftIO m => m a -> m b -> m a
`finally` Logger -> m ()
forall (m :: * -> *). MonadIO m => Logger -> m ()
flushLogStr Logger
logger
where
logger :: Logger
logger = Getting Logger env Logger -> env -> Logger
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting Logger env Logger
forall env. HasLogger env => Lens' env Logger
Lens' env Logger
loggerL env
env