From 95ef1e806c293d2b376dbf69e709e9a64f48c9f9 Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Wed, 1 Feb 2023 11:24:27 +0800 Subject: [PATCH] chore: don't crash when add_handler failed --- apps/emqx/src/config/emqx_config_logger.erl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/emqx/src/config/emqx_config_logger.erl b/apps/emqx/src/config/emqx_config_logger.erl index 625a498e2..15e4d3959 100644 --- a/apps/emqx/src/config/emqx_config_logger.erl +++ b/apps/emqx/src/config/emqx_config_logger.erl @@ -111,7 +111,17 @@ update_log_handler({Action, {handler, Id, Mod, Conf}}) -> log_to_console("Config override: ~s is ~p~n", [id_for_log(Id), Action]), % may return {error, {not_found, Id}} _ = logger:remove_handler(Id), - ok = logger:add_handler(Id, Mod, Conf). + case logger:add_handler(Id, Mod, Conf) of + ok -> + ok; + %% Don't crash here, otherwise the cluster rpc will retry the wrong handler forever. + {error, Reason} -> + log_to_console( + "Config override: ~s is ~p, but failed to add handler: ~p~n", + [id_for_log(Id), Action, Reason] + ) + end, + ok. id_for_log(console) -> "log.console_handler"; id_for_log(Other) -> "log.file_handlers." ++ atom_to_list(Other).