Просмотр исходного кода

Disable the default logger handler in shell if required

To avoid a conflict the Kernel's default handler have to be disabled
before the new default handler is added

    {kernel,
     [{logger,
       [{handler, default, undefined}
       ]}
     ]},
    {my_app,
     [{logger,
       [{handler, default, my_handler, #{}}
       ]}
     ]}

To support this behavior in shell it's necessary to process the
handler-default-undefined tuple.

It's not clear what to do with the simple handler (logger_simple_h)
however.  It's added at the start and removed if a default handler was
added.  Should it be added in reread_logger_config/1 if there's no
default handler?
pull/2149/head
Dmitri Vereshchagin 5 лет назад
Родитель
Сommit
0392742ceb
1 измененных файлов: 16 добавлений и 5 удалений
  1. +16
    -5
      src/rebar_utils.erl

+ 16
- 5
src/rebar_utils.erl Просмотреть файл

@ -502,15 +502,26 @@ reread_logger_config() ->
Primary = #{level => LogLvlPrimary,
filter_default => FilterDefault,
filters => Filters},
%% Load the correct handlers based on their individual config.
[case Id of
default -> logger:update_handler_config(Id, Cfg);
_ -> logger:add_handler(Id, Mod, Cfg)
end || {handler, Id, Mod, Cfg} <- LogCfg],
lists:foreach(fun maybe_reset_logger_handler/1, LogCfg),
logger:set_primary_config(Primary),
ok
end.
%% @private add or update handlers based on their individual config,
%% also remove default handler if needed.
maybe_reset_logger_handler({handler, Id, Mod, Cfg}) ->
case logger:add_handler(Id, Mod, Cfg) of
{error, {already_exist, Id}} ->
logger:update_handler_config(Id, Cfg);
_ ->
ok
end;
maybe_reset_logger_handler({handler, default, undefined}) ->
_ = logger:remove_handler(default),
ok;
maybe_reset_logger_handler(_) ->
ok.
%% @doc Given env. variable `FOO' we want to expand all references to
%% it in `InStr'. References can have two forms: `$FOO' and `${FOO}'

Загрузка…
Отмена
Сохранить