Przeglądaj źródła

WIP function to turn lager config into logger config

adt/lager_use_logger-option
Andrew Thompson 5 lat temu
rodzic
commit
c62732dab3
2 zmienionych plików z 57 dodań i 2 usunięć
  1. +52
    -1
      src/lager.erl
  2. +5
    -1
      src/lager_app.erl

+ 52
- 1
src/lager.erl Wyświetl plik

@ -36,7 +36,8 @@
get_loglevel/1, get_loglevel/2, set_loglevel/2, set_loglevel/3, set_loglevel/4, get_loglevels/1,
update_loglevel_config/1, posix_error/1, set_loghwm/2, set_loghwm/3, set_loghwm/4,
safe_format/3, safe_format_chop/3, unsafe_format/2, dispatch_log/5, dispatch_log/7, dispatch_log/9,
do_log/9, do_log/10, do_log_unsafe/10, pr/2, pr/3, pr_stacktrace/1, pr_stacktrace/2]).
do_log/9, do_log/10, do_log_unsafe/10, pr/2, pr/3, pr_stacktrace/1, pr_stacktrace/2,
configure_logger/0]).
-type log_level() :: none | debug | info | notice | warning | error | critical | alert | emergency.
-type log_level_number() :: 0..7.
@ -689,6 +690,56 @@ rotate_handler(Handler) ->
rotate_handler(Handler, Sink) ->
gen_event:call(Sink, Handler, rotate, ?ROTATE_TIMEOUT).
configure_logger() ->
Handlers = application:get_env(lager, handlers, lager_app:default_handlers()),
WhitelistedLoggerHandlers = application:get_env(lager, whitelisted_logger_handlers, []),
[ ok = logger:remove_handler(Id) || #{id := Id} <- logger:get_handler_config(), not lists:member(Id, WhitelistedLoggerHandlers) ],
add_logger_handlers(Handlers).
add_logger_handlers([]) ->
ok;
add_logger_handlers([{lager_console_backend, Config}|Tail]) ->
Level = proplists:get_value(level, Config, info),
Formatter = proplists:get_value(formatter, Config, lager_default_formatter),
FormatterConfig = proplists:get_value(formatter_config, Config, []),
logger:add_handler(console, logger_std_h, #{level => Level, formatter =>
{lager_logger_formatter, #{report_cb => fun lager_logger_formatter:report_cb/1,
formatter => Formatter,
formatter_config => FormatterConfig}}}),
PriConfig = #{level := CurrentLevel} = logger:get_primary_config(),
case lager_util:level_to_num(Level) > lager_util:level_to_num(CurrentLevel) of
true ->
logger:set_primary_config(maps:merge(PriConfig, #{level => Level}));
false ->
ok
end,
add_logger_handlers(Tail);
add_logger_handlers([{lager_file_backend, Config}|Tail]) ->
Level = proplists:get_value(level, Config, info),
File = proplists:get_value(file, Config),
Size = proplists:get_value(size, Config),
Count = proplists:get_value(count, Config),
Formatter = proplists:get_value(formatter, Config, lager_default_formatter),
FormatterConfig = proplists:get_value(formatter_config, Config, []),
logger:add_handler(list_to_atom(File), logger_disk_log_h, #{level => Level,
file => File,
max_no_files => Count,
max_no_bytes => Size,
formatter =>
{lager_logger_formatter, #{report_cb => fun lager_logger_formatter:report_cb/1,
formatter => Formatter,
formatter_config => FormatterConfig}}}),
PriConfig = #{level := CurrentLevel} = logger:get_primary_config(),
case lager_util:level_to_num(Level) > lager_util:level_to_num(CurrentLevel) of
true ->
logger:set_primary_config(maps:merge(PriConfig, #{level => Level}));
false ->
ok
end,
add_logger_handlers(Tail).
%% @private
trace_func(#trace_func_state_v1{pid=Pid, level=Level, format_string=Fmt}=FuncState, Event, ProcState) ->
lager:log(Level, Pid, Fmt, [Event, ProcState]),

+ 5
- 1
src/lager_app.erl Wyświetl plik

@ -31,7 +31,8 @@
start_handler/3,
configure_sink/2,
stop/1,
boot/1]).
boot/1,
default_handlers/0]).
%% The `application:get_env/3` compatibility wrapper was useful
%% for other modules in r15 and before
@ -281,6 +282,9 @@ stop(Handlers) ->
error_logger:add_report_handler(Handler)
end, Handlers).
default_handlers() ->
?DEFAULT_HANDLER_CONF.
expand_handlers([]) ->
[];
expand_handlers([{lager_file_backend, [{Key, _Value}|_]=Config}|T]) when is_atom(Key) ->

Ładowanie…
Anuluj
Zapisz