The default strategy is 'handle', for backwards compatibility,
and is set to that if otherwise undefined. Other strategies
include 'mirror' and 'ignore'.
Before when the error_logger was removed when lager starts up,
some functionality was chopped off, such as forwarding io to the
caller's group leader, this is supported with the strategy 'ignore'
and is similar to how the io system in erlang works traditionally.
Setting the 'mirror' strategy will essentially combine the other
two strategies such that the remote node reply is forwarded and also
handled locally. This is in some cases more in-line with what some
people might expect, efficiency may vary.
The traditional 'ignore' approach is more suitable and most likely
originally intended for embedded terminals where 'mirror'-ing the io
is largely unnecessary.
in common test, starting and stopping applications can make your logs
very noisy. the patch allows these messages to be suppressed on the
happy path, and raises the high water mark during ct tests so that
messages aren't dropped.
Note that compiling on OTP 17.0, or later, will produce beam files
(specifically lager_trunc_io) that are incompatible with R16B03-1, or
earlier, due to erlang:is_map/1 using a new beam opcode (156). However
if compiled on R16B03-1, or earlier, will produce beams files that are
compatible with 17.0, and later, and maps will be formatted where
supported by the active OTP release.
The example in "Internal log rotation" includes the tuple
{name, "error.log"}
This apparently should be
{file, "error.log"}
as seen in other config examples in README.md.
the default handlers defined at lager.app overwrites handlers defined previously by application:set_env(lager, handlers, ...) if lager application is started application:start(lager)
Change a latin1 sequence so it is given as a list of integers. this avoids the problem entirely
since ASCII has the same representation in both latin1 and in utf-8