Flexible, configurable, monadic and pretty logging.
This package implements nice and featureful wrapper around hslogger library.
log-warper
log-warper
is a high level and featureful logging library with monadic interface.
You can jump right into introduction tutorial to see how to write logging with log-warper
.
Features
Here is the list of features log-warper
provides.
Hierarchical logger names.
Logger names (tags for loggers) form hierarchy. It means, that
""
(also known asmempty
orrootLoggerName
) is a parent of logger with name"node"
which is a parent of logger with name"node.communication"
. So, logger name comprises dot-separated components. This means that if some logger name doesn't have some settings (like severity or output file) it takes its settings from the closest parent, containing this settings.Logging initialization from
.yaml
configuration file.Whole logging configuration can be specifed in a single
.yaml
file. See example here.Monadic logging interface.
log-warper
usesmtl
-style type classes to provide monadic interfaces for logging.Strict
StateT
based pure logging.See this tutorial on pure logging with
log-warper
.Different severity levels of messages with the ability to configure
Set
of severities.Output is colored :star:
When you log messages, you see time of this logging message, logger name, severity and
ThreadId
. Message formatting is configurable. Color or logged message tag depends onSeverity
for this message.Flexible and easy creation of
LoggerConfig
using monoidal builders and lenses.In case
.yaml
configuration is not enough for you, you can uselens
-based EDSL to create configurations.LoggerConfig
also implements instances forSemigroup
andMonoid
so you can combine your configurations from different sources (CLI and.yaml
for example).Logger rotation.
log-warper
supports logger rotation. Yes, there existlogrotate
and similar tools. But it's not easy to configure cross-platform (Windows, Linux, OSX) logging rotation with external tools.Ability to acquire last
N
megabytes of logs from in-memory cache.In case you want to analyze logging messages you can take them from in-memory cache.
Reference guide (FAQ)
Here you can find hints and tips how to achieve desired behavior with log-warper
.
How can I redirect all output to stderr?
- Write
termSeveritiesErr: All
on top-level of your.yaml
file.
- Write
How can I disable only Error messages for my logger?
- Use
excludeError
function.
- Use
How can I show
ThreadId
inside log message?- Add
showTid: true
to your.yaml
file.
- Add
How to easily disable terminal output?
- Put these lines into
.yaml
file:
termSeveritiesOut : [] termSeveritiesErr : []
- Put these lines into
How can I enable messages with severity
Info
and higher?- Write
severity: Info+
inside tree node of your logger settings.
- Write
How can I log inside functions like
forkIO
?- Use
liftLogIO
function. Its Haddock contains nice usage example.
- Use
How can I easily log exceptions without throwing them?
- Use functions from
System.Wlog.Exceptions
module.
- Use functions from
Contributing
This project uses
universum
as default prelude.