monad-logger-prefix-0.1.6: 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 # 

Methods

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

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

Associated Types

type StM (LogPrefixT m :: * -> *) a :: * #

Methods

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

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

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

Methods

liftBase :: b α -> LogPrefixT m α #

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

Methods

throwError :: e -> LogPrefixT m a #

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

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

Methods

ask :: LogPrefixT m r #

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

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

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

Methods

get :: LogPrefixT m s #

put :: s -> LogPrefixT m () #

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

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

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 #

Monad m => Monad (LogPrefixT m) Source # 

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 # 

Methods

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

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

Applicative m => Applicative (LogPrefixT m) Source # 

Methods

pure :: a -> LogPrefixT m a #

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

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

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

MonadIO m => MonadIO (LogPrefixT m) Source # 

Methods

liftIO :: IO a -> LogPrefixT m a #

MonadThrow m => MonadThrow (LogPrefixT m) Source # 

Methods

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

MonadCatch m => MonadCatch (LogPrefixT m) Source # 

Methods

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

MonadMask m => MonadMask (LogPrefixT m) Source # 

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 #

MonadLogger m => MonadLogger (LogPrefixT m) Source # 

Methods

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

MonadResource m => MonadResource (LogPrefixT m) Source # 
type StM (LogPrefixT m) a Source # 
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
...