Add CLI for log level (#1977)
This commit is contained in:
parent
2bd0f16884
commit
6fa183f847
|
@ -387,11 +387,16 @@ end}.
|
|||
{datatype, {enum, [off, file, console, both]}}
|
||||
]}.
|
||||
|
||||
{mapping, "log.level", "kernel.logger_level", [
|
||||
{mapping, "log.level", "kernel.logger", [
|
||||
{default, error},
|
||||
{datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, all]}}
|
||||
]}.
|
||||
|
||||
{mapping, "log.primary_level", "emqx.primary_log_level", [
|
||||
{default, error},
|
||||
{datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, all]}}
|
||||
]}.
|
||||
|
||||
{mapping, "log.logger_sasl_compatible", "kernel.logger_sasl_compatible", [
|
||||
{default, true},
|
||||
{datatype, {enum, [true, false]}}
|
||||
|
@ -427,9 +432,13 @@ end}.
|
|||
hidden
|
||||
]}.
|
||||
|
||||
{translation, "emqx.primary_log_level", fun(Conf) ->
|
||||
cuttlefish:conf_get("log.level", Conf)
|
||||
end}.
|
||||
|
||||
{translation, "kernel.logger", fun(Conf) ->
|
||||
LogTo = cuttlefish:conf_get("log.to", Conf),
|
||||
TopLogLevel = cuttlefish:conf_get("log.level", Conf),
|
||||
LogLevel = cuttlefish:conf_get("log.level", Conf),
|
||||
Formatter = {emqx_logger_formatter,
|
||||
#{template =>
|
||||
[time," [",level,"] ",
|
||||
|
@ -452,7 +461,7 @@ end}.
|
|||
DefaultHandler =
|
||||
if LogTo =:= console orelse LogTo =:= both ->
|
||||
[{handler, default, logger_std_h,
|
||||
#{level => TopLogLevel,
|
||||
#{level => LogLevel,
|
||||
config => #{type => standard_io},
|
||||
formatter => Formatter}}];
|
||||
true ->
|
||||
|
@ -463,7 +472,7 @@ end}.
|
|||
FileHandler =
|
||||
if LogTo =:= file orelse LogTo =:= both ->
|
||||
[{handler, file, logger_disk_log_h,
|
||||
#{level => TopLogLevel,
|
||||
#{level => LogLevel,
|
||||
config => FileConf(cuttlefish:conf_get("log.file", Conf)),
|
||||
formatter => Formatter,
|
||||
filesync_repeat_interval => no_repeat}}];
|
||||
|
|
|
@ -25,6 +25,12 @@
|
|||
%%--------------------------------------------------------------------
|
||||
|
||||
start(_Type, _Args) ->
|
||||
%% We'd like to configure the primary logger level here, rather than set the
|
||||
%% kernel config `logger_level` before starting the erlang vm.
|
||||
%% This is because the latter approach an annoying debug msg will be printed out:
|
||||
%% "[debug] got_unexpected_message {'EXIT',<0.1198.0>,normal}"
|
||||
logger:set_primary_config(level, application:get_env(emqx, primary_log_level, error)),
|
||||
|
||||
print_banner(),
|
||||
ekka:start(),
|
||||
{ok, Sup} = emqx_sup:start_link(),
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
-export([add_metadata_peername/1, add_metadata_client_id/1]).
|
||||
-export([add_proc_metadata/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]).
|
||||
|
||||
debug(Msg) ->
|
||||
logger:debug(Msg).
|
||||
debug(Format, Args) ->
|
||||
|
@ -73,4 +76,41 @@ add_proc_metadata(Meta) ->
|
|||
logger:set_process_metadata(Meta);
|
||||
OldMeta ->
|
||||
logger:set_process_metadata(maps:merge(OldMeta, Meta))
|
||||
end.
|
||||
end.
|
||||
|
||||
get_primary_log_level() ->
|
||||
#{level := Level} = logger:get_primary_config(),
|
||||
Level.
|
||||
|
||||
set_primary_log_level(Level) ->
|
||||
logger:set_primary_config(level, Level).
|
||||
|
||||
get_log_handlers() ->
|
||||
lists:map(fun log_hanlder_info/1, logger:get_handler_config()).
|
||||
|
||||
get_log_handler(HandlerId) ->
|
||||
{ok, Conf} = logger:get_handler_config(HandlerId),
|
||||
log_hanlder_info(Conf).
|
||||
|
||||
set_log_handler_level(HandlerId, Level) ->
|
||||
logger:set_handler_config(HandlerId, level, Level).
|
||||
|
||||
%%========================
|
||||
%% Internal Functions
|
||||
%%========================
|
||||
log_hanlder_info(#{id := Id, level := Level, module := logger_std_h,
|
||||
config := #{type := Type}}) when Type =:= standard_io;
|
||||
Type =:= standard_error ->
|
||||
{Id, Level, console};
|
||||
log_hanlder_info(#{id := Id, level := Level, module := logger_std_h,
|
||||
config := #{type := Type}}) ->
|
||||
case Type of
|
||||
{file, Filename} -> {Id, Level, Filename};
|
||||
{file, Filename, _Opts} -> {Id, Level, Filename};
|
||||
_ -> {Id, Level, unknown}
|
||||
end;
|
||||
log_hanlder_info(#{id := Id, level := Level, module := logger_disk_log_h,
|
||||
config := #{file := Filename}}) ->
|
||||
{Id, Level, Filename};
|
||||
log_hanlder_info(#{id := Id, level := Level, module := _OtherModule}) ->
|
||||
{Id, Level, unknown}.
|
Loading…
Reference in New Issue