Logger level in one command (#2115)

* Refactor logger-level-in-one-command

* Update API
This commit is contained in:
Shawn 2019-01-07 11:40:54 +08:00 committed by turtleDeng
parent cb93a356a0
commit 0d9929fdaa
1 changed files with 28 additions and 1 deletions

View File

@ -27,6 +27,7 @@
-export([get_primary_log_level/0, set_primary_log_level/1]). -export([get_primary_log_level/0, set_primary_log_level/1]).
-export([get_log_handlers/0, get_log_handler/1, set_log_handler_level/2]). -export([get_log_handlers/0, get_log_handler/1, set_log_handler_level/2]).
-export([set_log_level/1]).
debug(Msg) -> debug(Msg) ->
logger:debug(Msg). logger:debug(Msg).
@ -89,6 +90,13 @@ get_log_handler(HandlerId) ->
set_log_handler_level(HandlerId, Level) -> set_log_handler_level(HandlerId, Level) ->
logger:set_handler_config(HandlerId, level, Level). logger:set_handler_config(HandlerId, level, Level).
%% Set both the primary and all handlers level in one command
set_log_level(Level) ->
case set_primary_log_level(Level) of
ok -> set_all_log_handlers_level(Level);
{error, Error} -> {error, {primary_logger_level, Error}}
end.
%%======================== %%========================
%% Internal Functions %% Internal Functions
%%======================== %%========================
@ -107,4 +115,23 @@ log_hanlder_info(#{id := Id, level := Level, module := logger_disk_log_h,
config := #{file := Filename}}) -> config := #{file := Filename}}) ->
{Id, Level, Filename}; {Id, Level, Filename};
log_hanlder_info(#{id := Id, level := Level, module := _OtherModule}) -> log_hanlder_info(#{id := Id, level := Level, module := _OtherModule}) ->
{Id, Level, unknown}. {Id, Level, unknown}.
%% set level for all log handlers in one command
set_all_log_handlers_level(Level) ->
set_all_log_handlers_level(get_log_handlers(), Level, []).
set_all_log_handlers_level([{ID, Level, _Dst} | List], NewLevel, ChangeHistory) ->
case set_log_handler_level(ID, NewLevel) of
ok -> set_all_log_handlers_level(List, NewLevel, [{ID, Level} | ChangeHistory]);
{error, Error} ->
rollback(ChangeHistory),
{error, {handlers_logger_level, {ID, Error}}}
end;
set_all_log_handlers_level([], _NewLevel, _NewHanlder) ->
ok.
rollback([{ID, Level} | List]) ->
emqx_logger:set_log_handler_level(ID, Level),
rollback(List);
rollback([]) -> ok.