From a38d1166c2effec86906eb52e13d7280af3f78af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Date: Wed, 13 Mar 2019 16:58:22 +0100 Subject: [PATCH 1/2] rabbit_lager: Multiply high watermark by 100 when log level is debug Otherwise debug messages are quickly dropped by Lager. --- src/rabbit_lager.erl | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/rabbit_lager.erl b/src/rabbit_lager.erl index bfdd26fee3f9..a132b92ccb87 100644 --- a/src/rabbit_lager.erl +++ b/src/rabbit_lager.erl @@ -63,26 +63,35 @@ set_log_level(Level) -> set_log_level(true, Level) -> SinksAndHandlers = [{Sink, gen_event:which_handlers(Sink)} || Sink <- lager:list_all_sinks()], - set_sink_log_level(SinksAndHandlers, Level); + DefaultHwm = application:get_env(lager, error_logger_hwm_original, 50), + Hwm = case Level of + debug -> DefaultHwm * 100; + _ -> DefaultHwm + end, + application:set_env(lager, error_logger_hwm, Hwm), + set_sink_log_level(SinksAndHandlers, Level, Hwm); set_log_level(_, Level) -> {error, {invalid_log_level, Level}}. -set_sink_log_level([], _Level) -> +set_sink_log_level([], _Level, _Hwm) -> ok; -set_sink_log_level([{Sink, Handlers}|Rest], Level) -> - set_sink_handler_log_level(Sink, Handlers, Level), - set_sink_log_level(Rest, Level). +set_sink_log_level([{Sink, Handlers}|Rest], Level, Hwm) -> + set_sink_handler_log_level(Sink, Handlers, Level, Hwm), + set_sink_log_level(Rest, Level, Hwm). -set_sink_handler_log_level(_Sink, [], _Level) -> +set_sink_handler_log_level(_Sink, [], _Level, _Hwm) -> ok; -set_sink_handler_log_level(Sink, [Handler|Rest], Level) when is_atom(Handler) -> +set_sink_handler_log_level(Sink, [Handler|Rest], Level, Hwm) + when is_atom(Handler) andalso is_integer(Hwm) -> + lager:set_loghwm(Sink, Handler, undefined, Hwm), ok = lager:set_loglevel(Sink, Handler, undefined, Level), - set_sink_handler_log_level(Sink, Rest, Level); -set_sink_handler_log_level(Sink, [{Handler, Id}|Rest], Level) -> + set_sink_handler_log_level(Sink, Rest, Level, Hwm); +set_sink_handler_log_level(Sink, [{Handler, Id}|Rest], Level, Hwm) -> + lager:set_loghwm(Sink, Handler, Id, Hwm), ok = lager:set_loglevel(Sink, Handler, Id, Level), - set_sink_handler_log_level(Sink, Rest, Level); -set_sink_handler_log_level(Sink, [_|Rest], Level) -> - set_sink_handler_log_level(Sink, Rest, Level). + set_sink_handler_log_level(Sink, Rest, Level, Hwm); +set_sink_handler_log_level(Sink, [_|Rest], Level, Hwm) -> + set_sink_handler_log_level(Sink, Rest, Level, Hwm). log_locations() -> ensure_lager_configured(), From 13f41179bdb3e67fa2491aa45dc1a2de4f74e717 Mon Sep 17 00:00:00 2001 From: Luke Bakken Date: Wed, 13 Mar 2019 09:37:45 -0700 Subject: [PATCH 2/2] Add check for integer value --- src/rabbit_lager.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rabbit_lager.erl b/src/rabbit_lager.erl index a132b92ccb87..45f2cfbc40b3 100644 --- a/src/rabbit_lager.erl +++ b/src/rabbit_lager.erl @@ -302,7 +302,7 @@ configure_lager() -> {ok, Val} when is_integer(Val) andalso Val < 1000 -> ok = application:set_env(lager, error_logger_hwm, 1000), ok = application:set_env(lager, error_logger_hwm_original, Val); - {ok, Val} -> + {ok, Val} when is_integer(Val) -> ok = application:set_env(lager, error_logger_hwm_original, Val), ok end,