monad-logger-prefix-0.1.11: Add prefixes to your monad-logger output

Copyright(c) Seller Labs 2016
LicenseApache 2.0
Maintainermatt@sellerlabs.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Logger.Prefix

Contents

Description

This module exports the LogPrefixT monad transfomer. This transformer adds a given prefix to a MonadLogger context, allowing you to make your logs a bit more greppable without including much boilerplate. The prefixes can be nested easily.

The function prefixLogs is the most convenient way to use the library. All you have to do is use the function to add the prefix, and it Just Works. Here's an example:

someLoggingFunction :: MonadLogger m => m ()
someLoggingFunction = do
    $(logDebug) "No prefix here"
    "foo" `prefixLogs` do
        $(logDebug) "There's a [foo] there!
        "bar" `prefixLogs` do
            $(logDebug) "Now there's a [foo] *and* a [bar]"
Synopsis

LogPrefixT

data LogPrefixT m a Source #

LogPrefixT is a monad transformer that prepends a bit of text to each logging action in the current MonadLogger context. The internals are currently implemented as a wrapper around ReaderT LogStr.

Instances
MonadTrans LogPrefixT Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

lift :: Monad m => m a -> LogPrefixT m a #

MonadBase b m => MonadBase b (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

liftBase :: b α -> LogPrefixT m α #

MonadBaseControl b m => MonadBaseControl b (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Associated Types

type StM (LogPrefixT m) a :: Type #

Methods

liftBaseWith :: (RunInBase (LogPrefixT m) b -> b a) -> LogPrefixT m a #

restoreM :: StM (LogPrefixT m) a -> LogPrefixT m a #

MonadWriter w m => MonadWriter w (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

writer :: (a, w) -> LogPrefixT m a #

tell :: w -> LogPrefixT m () #

listen :: LogPrefixT m a -> LogPrefixT m (a, w) #

pass :: LogPrefixT m (a, w -> w) -> LogPrefixT m a #

MonadState s m => MonadState s (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

get :: LogPrefixT m s #

put :: s -> LogPrefixT m () #

state :: (s -> (a, s)) -> LogPrefixT m a #

MonadReader r m => MonadReader r (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

ask :: LogPrefixT m r #

local :: (r -> r) -> LogPrefixT m a -> LogPrefixT m a #

reader :: (r -> a) -> LogPrefixT m a #

MonadError e m => MonadError e (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

throwError :: e -> LogPrefixT m a #

catchError :: LogPrefixT m a -> (e -> LogPrefixT m a) -> LogPrefixT m a #

Monad m => Monad (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

(>>=) :: LogPrefixT m a -> (a -> LogPrefixT m b) -> LogPrefixT m b #

(>>) :: LogPrefixT m a -> LogPrefixT m b -> LogPrefixT m b #

return :: a -> LogPrefixT m a #

fail :: String -> LogPrefixT m a #

Functor m => Functor (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

fmap :: (a -> b) -> LogPrefixT m a -> LogPrefixT m b #

(<$) :: a -> LogPrefixT m b -> LogPrefixT m a #

Applicative m => Applicative (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

pure :: a -> LogPrefixT m a #

(<*>) :: LogPrefixT m (a -> b) -> LogPrefixT m a -> LogPrefixT m b #

liftA2 :: (a -> b -> c) -> LogPrefixT m a -> LogPrefixT m b -> LogPrefixT m c #

(*>) :: LogPrefixT m a -> LogPrefixT m b -> LogPrefixT m b #

(<*) :: LogPrefixT m a -> LogPrefixT m b -> LogPrefixT m a #

MonadIO m => MonadIO (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

liftIO :: IO a -> LogPrefixT m a #

MonadResource m => MonadResource (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

MonadThrow m => MonadThrow (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

throwM :: Exception e => e -> LogPrefixT m a #

MonadCatch m => MonadCatch (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

catch :: Exception e => LogPrefixT m a -> (e -> LogPrefixT m a) -> LogPrefixT m a #

MonadMask m => MonadMask (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

mask :: ((forall a. LogPrefixT m a -> LogPrefixT m a) -> LogPrefixT m b) -> LogPrefixT m b #

uninterruptibleMask :: ((forall a. LogPrefixT m a -> LogPrefixT m a) -> LogPrefixT m b) -> LogPrefixT m b #

generalBracket :: LogPrefixT m a -> (a -> ExitCase b -> LogPrefixT m c) -> (a -> LogPrefixT m b) -> LogPrefixT m (b, c) #

MonadLogger m => MonadLogger (LogPrefixT m) Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> LogPrefixT m () #

type StM (LogPrefixT m) a Source # 
Instance details

Defined in Control.Monad.Logger.Prefix

type StM (LogPrefixT m) a = StM m a

prefixLogs :: Text -> LogPrefixT m a -> m a infixr 5 Source #

This function runs the underlying MonadLogger instance with a prefix using the LogPrefixT transformer.

>>> :set -XOverloadedStrings
>>> let l = logDebugN "bar"
>>> runStdoutLoggingT (prefixLogs "foo" (logDebugN "bar\n"))
[Debug] [foo] bar
...