A logging framework written with flexibility and performance
in mind.
Quick Start
import System.Logger
main ∷ IO ()
main = withConsoleLogger Info $ do
logg Info "moin"
withLabel ("function", "f") f
logg Warn "tschüss"
where
f = withLevel Debug $ do
logg Debug "debug f"
Description
This Version is yet a preview
The logging system consists of four main parts:
The logging front-end are those types and functions that are used
to produce log messages in the code. This includes the LogLevel
type, the LogPolicy
type, the LogLabel
and LogScope
types,
the LogFunction
type, and the MonadLog
type class.
The abstract LoggerCtx
is the context through which the LogFunction
delivers log messages to the logger back-end.
The formatter is a function for serializing log messages.
The logger back-end is a callback that is invoked by Logger
on
each log messages. The logger back-end applies the formatting function
and delivers the log messages to some sink.
The framework allows to combine this components in a modular way. The
front-end types, the Logger
, and the back-end callback are represented
by types or type classes. The formatter exists only as a concept
in the implementation of back-ends. These types and concepts together
form the abstract logger interface that is defined in the module
System.Logger.Types
.
The package also provides a concrete Logger that implements these components
in the module System.Logger.Logger
and System.Logger.Backend.Handle