log-warper
log-warper copied to clipboard
Logging library to provide more convenient, extremely configurable but simple monadic interface with pretty output
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