fix: refresh logger handler when starting

This commit is contained in:
Zhongwen Deng 2022-11-16 09:55:56 +08:00
parent a77d33b97d
commit 91d38b410d
2 changed files with 12 additions and 1 deletions

View File

@ -18,7 +18,7 @@
-behaviour(emqx_config_handler).
%% API
-export([add_handler/0, remove_handler/0]).
-export([add_handler/0, remove_handler/0, refresh_config/0]).
-export([post_config_update/5]).
-define(LOG, [log]).
@ -31,6 +31,16 @@ remove_handler() ->
ok = emqx_config_handler:remove_handler(?LOG),
ok.
%% refresh logger config when booting, the override config may have changed after node start.
%% Kernel's app env is confirmed before the node starts,
%% but we only copy cluster-override.conf from other node after this node starts,
%% so we need to refresh the logger config after this node starts.
%% It will not affect the logger config when cluster-override.conf is unchanged.
refresh_config() ->
Log = emqx:get_raw_config(?LOG),
{ok, _} = emqx:update_config(?LOG, Log),
ok.
post_config_update(?LOG, _Req, _NewConf, _OldConf, AppEnvs) ->
Kernel = proplists:get_value(kernel, AppEnvs),
NewHandlers = proplists:get_value(logger, Kernel, []),

View File

@ -582,6 +582,7 @@ save_to_override_conf(RawConf, Opts) ->
add_handlers() ->
ok = emqx_config_logger:add_handler(),
emqx_sys_mon:add_handler(),
emqx_config_logger:refresh_config(),
ok.
remove_handlers() ->