|
|
@ -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]), |
|
|
|