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

Safe HaskellNone
LanguageHaskell2010

System.Wlog.CanLog

Contents

Description

Type class that add ability to log messages. Supports pure and IO logging.

Synopsis

Documentation

class Monad m => CanLog m where Source #

Instances of this class should explain how they add messages to their log.

Methods

dispatchMessage :: LoggerName -> Severity -> Text -> m () Source #

dispatchMessage :: (MonadTrans t, t n ~ m, CanLog n) => LoggerName -> Severity -> Text -> m () Source #

type WithLogger m = (CanLog m, HasLoggerName m) Source #

Type alias for constraints CanLog and HasLoggerName. We need two different type classes to support more flexible interface but in practice we usually use them both.

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 # 

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

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

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.

Logging functions

logDebug :: WithLogger m => Text -> m () Source #

Shortcut for logMessage to use according severity.

logError :: WithLogger m => Text -> m () Source #

Shortcut for logMessage to use according severity.

logInfo :: WithLogger m => Text -> m () Source #

Shortcut for logMessage to use according severity.

logNotice :: WithLogger m => Text -> m () Source #

Shortcut for logMessage to use according severity.

logWarning :: WithLogger m => Text -> m () Source #

Shortcut for logMessage to use according severity.

logMessage :: WithLogger m => Severity -> Text -> m () Source #

Logs message with specified severity using logger name in context.