monad-logger-0.2.3.1: A class of monads which can log messages.

Safe HaskellNone

Control.Monad.Logger

Contents

Description

This module provides the facilities needed for a decoupled logging system.

The MonadLogger class is implemented by monads that give access to a logging facility. Note that although IO, Identity and ST are instances of MonadLogger, they will discard all log messages. If you're defining a custom monad, then you may define an instance of MonadLogger that routes the log messages to the appropriate place (e.g., that's what yesod-core's GHandler does). Otherwise, you may use the LoggingT monad included in this module (see runStderrLoggingT).

As a user of the logging facility, we provide you some convenient Template Haskell splices that use the MonadLogger class. They will record their source file and position, which is very helpful when debugging. See logDebug for more information.

Synopsis

MonadLogger

class Monad m => MonadLogger m whereSource

Methods

monadLoggerLog :: ToLogStr msg => Loc -> LogLevel -> msg -> m ()Source

monadLoggerLogSource :: ToLogStr msg => Loc -> LogSource -> LogLevel -> msg -> m ()Source

Instances

Helper transformer

newtype LoggingT m a Source

Monad transformer that adds a new logging function.

Since 0.2.2

Constructors

LoggingT 

Fields

runLoggingT :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ()) -> m a
 

runStderrLoggingT :: MonadIO m => LoggingT m a -> m aSource

Run a block using a MonadLogger instance which prints to stderr.

Since 0.2.2

runStdoutLoggingT :: MonadIO m => LoggingT m a -> m aSource

Run a block using a MonadLogger instance which prints to stdout.

Since 0.2.2

TH logging

logDebug :: Q ExpSource

Generates a function that takes a Text and logs a LevelDebug message. Usage:

 $(logDebug) "This is a debug log message"

logOther :: Text -> Q ExpSource

Generates a function that takes a Text and logs a LevelOther message. Usage:

 $(logOther "My new level") "This is a log message"

TH logging with source

logDebugS :: Q ExpSource

Generates a function that takes a LogSource and Text and logs a LevelDebug message. Usage:

 $logDebug "SomeSource" "This is a debug log message"

logOtherS :: Q ExpSource

Generates a function that takes a LogSource, a level name and a Text and logs a LevelOther message. Usage:

 $logOther "SomeSource" "My new level" "This is a log message"