A logging framework written with flexibility and performance
in mind.
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