How to configure Logger?

Hi guys,

With the default logger config, I get this:

$ ls -1 /var/log/dracs/
debug.log.1
debug.log.2
debug.log.3
debug.log.idx
debug.log.siz
error.log.1
error.log.2
error.log.idx
error.log.siz

What I’d like to have is something more convenient and similar to the old lager’s behavior:

$ ls -1 /var/log/dracs/
debug.log <--- latest DEBUG logs always written here (no suffix number)
debug.log.1
debug.log.2   
debug.log.idx
debug.log.siz
error.log <--- latest ERROR logs always written here (no suffix number)
error.log.1
error.log.idx
error.log.siz

Many thanks

3 Likes

Something like this might work:

[
  {lager, [
    {handlers, [
      {lager_file_backend, [
        {file, "/var/log/dracs/debug.log"},
        {level, debug},
        {size, 10485760}, % 10 MB
        {date, "$D0"},
        {count, 2},
        {formatter, lager_default_formatter},
        {formatter_config, [time, " ", severity, ": ", message, "\n"]}
      ]},
      {lager_file_backend, [
        {file, "/var/log/dracs/error.log"},
        {level, error},
        {size, 10485760}, % 10 MB
        {date, "$D0"},
        {count, 2},
        {formatter, lager_default_formatter},
        {formatter_config, [time, " ", severity, ": ", message, "\n"]}
      ]}
    ]}
  ]}
].

I pulled the options from the lager_file_backend module code:

record(state, {
        name :: string(),
        level :: {'mask', integer()},
        fd :: file:io_device() | undefined,
        inode :: integer() | undefined,
        flap=false :: boolean(),
        size = 0 :: integer(),
        date :: undefined | string(),
        count = 10 :: integer(),
        shaper :: lager_shaper(),
        formatter :: atom(),
        formatter_config :: any(),
        sync_on :: {'mask', integer()},
        check_interval = ?DEFAULT_CHECK_INTERVAL :: non_neg_integer(),
        sync_interval = ?DEFAULT_SYNC_INTERVAL :: non_neg_integer(),
        sync_size = ?DEFAULT_SYNC_SIZE :: non_neg_integer(),
        last_check = os:timestamp() :: erlang:timestamp()
    }).

Source: lager/lager_file_backend.erl at master · basho/lager · GitHub

2 Likes