Overview

Lager (as in the beer) is a logging framework for Erlang. Its purpose is
to provide a more traditional way to perform logging in an erlang application
that plays nicely with traditional UNIX logging tools like logrotate and
syslog.

The available configuration options for each backend are listed in their
module’s documentation.

Error logger integration

Lager is also supplied with a error_logger handler module that translates
traditional erlang error messages into a friendlier format and sends them into
lager itself to be treated like a regular lager log call. To disable this, set
the lager application variable `error_logger_redirect’ to `false’.

The error_logger handler will also log more complete error messages (protected
with use of trunc_io) to a “crash log” which can be referred to for further
information. The location of the crash log can be specified by the crash_log
application variable. If undefined it is not written at all.

Runtime loglevel changes

You can change the log level of any lager backend at runtime by doing the
following:

lager:set_loglevel(lager_console_backend, debug).

Or, for the backend with multiple handles (files, mainly):

lager:set_loglevel(lager_file_backend, "console.log" debug).

Lager keeps track of the minium log level being used by any backend and
supresses generation of messages lower than that level. This means that debug
log messages, when no backend is consuming debug messages, are effectively
free. A simple benchmark of doing 1 million debug log messages while the the
minimum threshold was above that takes less than half a second.