diff --git a/rebar.config b/rebar.config index 4b4d8a8..c0be13c 100644 --- a/rebar.config +++ b/rebar.config @@ -21,7 +21,7 @@ {erl_opts, [ {lager_extra_sinks, ['__lager_test_sink']}, - {platform_define, "(19|20)", test_statem}, + {platform_define, "(19|20|21)", test_statem}, {platform_define, "(18)", 'FUNCTION_NAME', unavailable}, {platform_define, "(18)", 'FUNCTION_ARITY', 0}, debug_info, diff --git a/src/lager_app.erl b/src/lager_app.erl index 2d3643d..01b1487 100644 --- a/src/lager_app.erl +++ b/src/lager_app.erl @@ -158,24 +158,30 @@ start_error_logger_handler(true, HWM, WhiteList) -> throw({error, bad_config}) end, + case whereis(error_logger) of + undefined -> + %% On OTP 21 and above, error_logger is deprecated in favor of 'logger' + %% As a band-aid, boot up error_logger anyway and install it as a logger handler + %% we can't use error_logger:add_report_handler because we want supervision of the handler + %% so we have to manually add the logger handler + %% + %% Longer term we should be installing a logger handler instead, but this will bridge the gap + %% for now. + error_logger:start(), + _ = logger:add_handler(error_logger,error_logger,#{level=>info,filter_default=>log}); + _ -> + ok + end, - _ = case supervisor:start_child(lager_handler_watcher_sup, [error_logger, error_logger_lager_h, [HWM, GlStrategy]]) of + %% capture which handlers we removed from error_logger so we can restore them when lager stops + OldHandlers = case supervisor:start_child(lager_handler_watcher_sup, [error_logger, error_logger_lager_h, [HWM, GlStrategy]]) of {ok, _} -> [begin error_logger:delete_report_handler(X), X end || X <- gen_event:which_handlers(error_logger) -- [error_logger_lager_h | WhiteList]]; {error, _} -> [] end, - - Handlers = case application:get_env(lager, handlers) of - undefined -> - [{lager_console_backend, [{level, info}]}, - {lager_file_backend, [{file, "log/error.log"}, {level, error}, {size, 10485760}, {date, "$D0"}, {count, 5}]}, - {lager_file_backend, [{file, "log/console.log"}, {level, info}, {size, 10485760}, {date, "$D0"}, {count, 5}]}]; - {ok, Val} -> - Val - end, - Handlers. + OldHandlers. configure_sink(Sink, SinkDef) -> lager_config:new_sink(Sink),