Skip to content

Commit 64c7c7a

Browse files
committed
Ensure default handler for OTP 21.1+ logger is removed
1 parent 0186a91 commit 64c7c7a

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

src/rabbit_lager.erl

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
-module(rabbit_lager).
1818

19-
-include("rabbit_log.hrl").
19+
-include_lib("rabbit_common/include/rabbit_log.hrl").
2020

2121
%% API
2222
-export([start_logger/0, log_locations/0, fold_sinks/2,
@@ -26,9 +26,10 @@
2626
-export([configure_lager/0]).
2727

2828
start_logger() ->
29+
ok = maybe_remove_logger_handler(),
2930
ok = app_utils:stop_applications([lager, syslog]),
30-
ensure_lager_configured(),
31-
lager:start(),
31+
ok = ensure_lager_configured(),
32+
ok = app_utils:start_applications([lager]),
3233
fold_sinks(
3334
fun
3435
(_, [], Acc) ->
@@ -176,6 +177,10 @@ lager_configured() ->
176177
configure_lager() ->
177178
ok = app_utils:load_applications([lager]),
178179
%% Turn off reformatting for error_logger messages
180+
case application:get_env(lager, error_logger_redirect) of
181+
undefined -> application:set_env(lager, error_logger_redirect, true);
182+
_ -> ok
183+
end,
179184
case application:get_env(lager, error_logger_format_raw) of
180185
undefined -> application:set_env(lager, error_logger_format_raw, true);
181186
_ -> ok
@@ -348,7 +353,6 @@ generate_handler(syslog_lager_backend, HandlerConfig) ->
348353
DefaultConfigVal = default_config_value(level),
349354
Level = proplists:get_value(level, HandlerConfig, DefaultConfigVal),
350355
ok = configure_syslog(),
351-
ok = app_utils:start_applications([syslog]),
352356
[{syslog_lager_backend,
353357
[Level,
354358
{},
@@ -575,3 +579,17 @@ list_expected_sinks() ->
575579
ok = application:set_env(rabbit, lager_extra_sinks, List),
576580
List
577581
end.
582+
583+
maybe_remove_logger_handler() ->
584+
M = logger,
585+
F = remove_handler,
586+
try
587+
ok = erlang:apply(M, F, [default])
588+
catch
589+
error:undef ->
590+
% OK since the logger module only exists in OTP 21.1 or later
591+
ok;
592+
Err:Reason ->
593+
error_logger:error_msg("calling ~p:~p failed: ~p:~p~n",
594+
[M, F, Err, Reason])
595+
end.

0 commit comments

Comments
 (0)