diff --git a/apps/emqx/src/config/emqx_config_logger.erl b/apps/emqx/src/config/emqx_config_logger.erl index babf9c431..3d974d0c6 100644 --- a/apps/emqx/src/config/emqx_config_logger.erl +++ b/apps/emqx/src/config/emqx_config_logger.erl @@ -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, []), diff --git a/apps/emqx/src/emqx_config.erl b/apps/emqx/src/emqx_config.erl index 2fa39d094..51de1d0d0 100644 --- a/apps/emqx/src/emqx_config.erl +++ b/apps/emqx/src/emqx_config.erl @@ -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() ->