log-warper-1.5.0: Flexible, configurable, monadic and pretty logging

Safe HaskellNone
LanguageHaskell2010

System.Wlog.PureLogging

Contents

Description

This module supports pure logging.

Synopsis

Pure logging manipulation

newtype PureLogger m a Source #

Pure implementation of CanLog type class. Instead of writing log messages into console it appends log messages into StateT log. It uses DList for better performance, because messages can be added only at the end of log. But it uses unsafePerformIO so use with caution within IO.

TODO: Should we use some Data.Tree-like structure to observe message only by chosen logger names?

Constructors

PureLogger 

Instances

MonadTrans PureLogger Source # 

Methods

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

Monad m => Monad (PureLogger m) Source # 

Methods

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

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

return :: a -> PureLogger m a #

fail :: String -> PureLogger m a #

Functor m => Functor (PureLogger m) Source # 

Methods

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

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

Monad m => Applicative (PureLogger m) Source # 

Methods

pure :: a -> PureLogger m a #

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

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

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

MonadThrow m => MonadThrow (PureLogger m) Source # 

Methods

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

(HasLoggerName m, Monad m) => HasLoggerName (PureLogger m) Source # 
Monad m => CanLog (PureLogger m) Source # 
MFunctor * PureLogger Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

Monad m => MonadState (DList LogEvent) (PureLogger m) Source # 

data LogEvent Source #

Holds all required information for dispatchLoggerName function.

Constructors

LogEvent 

dispatchEvents :: CanLog m => [LogEvent] -> m () Source #

Logs all LogEvent's from given list. This function supposed to be used after runPureLog.

logEvents :: WithLogger m => [LogEvent] -> m () Source #

Logs all LogEvent's from given list. Just like dispatchEvents but uses proper logger Name.

runPureLog :: Monad m => PureLogger m a -> m (a, [LogEvent]) Source #

Return log of pure logging action as list of LogEvent.

launchPureLog :: (CanLog n, Monad m) => (forall f. Functor f => m (f a) -> n (f b)) -> PureLogger m a -> n b Source #

Performs actual logging once given action completes.

newtype NamedPureLogger m a Source #

Instances

MonadTrans NamedPureLogger Source # 

Methods

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

Monad m => Monad (NamedPureLogger m) Source # 
Functor m => Functor (NamedPureLogger m) Source # 

Methods

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

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

Monad m => Applicative (NamedPureLogger m) Source # 
MonadThrow m => MonadThrow (NamedPureLogger m) Source # 

Methods

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

Monad m => HasLoggerName (NamedPureLogger m) Source # 
Monad m => CanLog (NamedPureLogger m) Source # 
MFunctor * NamedPureLogger Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> t m b -> t n b #

Monad m => MonadState (DList LogEvent) (NamedPureLogger m) Source # 

runNamedPureLog :: (Monad m, HasLoggerName m) => NamedPureLogger m a -> m (a, [LogEvent]) Source #

Return log of pure logging action as list of LogEvent, using logger name provided by context.

launchNamedPureLog :: (WithLogger n, Monad m) => (forall f. Functor f => m (f a) -> n (f b)) -> NamedPureLogger m a -> n b Source #

Similar as launchPureLog, but provides logger name from current context.