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]}}
|
{datatype, {enum, [off, file, console, both]}}
|
||||||
]}.
|
]}.
|
||||||
|
|
||||||
{mapping, "log.level", "kernel.logger_level", [
|
{mapping, "log.level", "kernel.logger", [
|
||||||
{default, error},
|
{default, error},
|
||||||
{datatype, {enum, [debug, info, notice, warning, error, critical, alert, emergency, all]}}
|
{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", [
|
{mapping, "log.logger_sasl_compatible", "kernel.logger_sasl_compatible", [
|
||||||
{default, true},
|
{default, true},
|
||||||
{datatype, {enum, [true, false]}}
|
{datatype, {enum, [true, false]}}
|
||||||
|
@ -427,9 +432,13 @@ end}.
|
||||||
hidden
|
hidden
|
||||||
]}.
|
]}.
|
||||||
|
|
||||||
|
{translation, "emqx.primary_log_level", fun(Conf) ->
|
||||||
|
cuttlefish:conf_get("log.level", Conf)
|
||||||
|
end}.
|
||||||
|
|
||||||
{translation, "kernel.logger", fun(Conf) ->
|
{translation, "kernel.logger", fun(Conf) ->
|
||||||
LogTo = cuttlefish:conf_get("log.to", 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,
|
Formatter = {emqx_logger_formatter,
|
||||||
#{template =>
|
#{template =>
|
||||||
[time," [",level,"] ",
|
[time," [",level,"] ",
|
||||||
|
@ -452,7 +461,7 @@ end}.
|
||||||
DefaultHandler =
|
DefaultHandler =
|
||||||
if LogTo =:= console orelse LogTo =:= both ->
|
if LogTo =:= console orelse LogTo =:= both ->
|
||||||
[{handler, default, logger_std_h,
|
[{handler, default, logger_std_h,
|
||||||
#{level => TopLogLevel,
|
#{level => LogLevel,
|
||||||
config => #{type => standard_io},
|
config => #{type => standard_io},
|
||||||
formatter => Formatter}}];
|
formatter => Formatter}}];
|
||||||
true ->
|
true ->
|
||||||
|
@ -463,7 +472,7 @@ end}.
|
||||||
FileHandler =
|
FileHandler =
|
||||||
if LogTo =:= file orelse LogTo =:= both ->
|
if LogTo =:= file orelse LogTo =:= both ->
|
||||||
[{handler, file, logger_disk_log_h,
|
[{handler, file, logger_disk_log_h,
|
||||||
#{level => TopLogLevel,
|
#{level => LogLevel,
|
||||||
config => FileConf(cuttlefish:conf_get("log.file", Conf)),
|
config => FileConf(cuttlefish:conf_get("log.file", Conf)),
|
||||||
formatter => Formatter,
|
formatter => Formatter,
|
||||||
filesync_repeat_interval => no_repeat}}];
|
filesync_repeat_interval => no_repeat}}];
|
||||||
|
|
|
@ -25,6 +25,12 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
start(_Type, _Args) ->
|
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(),
|
print_banner(),
|
||||||
ekka:start(),
|
ekka:start(),
|
||||||
{ok, Sup} = emqx_sup:start_link(),
|
{ok, Sup} = emqx_sup:start_link(),
|
||||||
|
|
|
@ -25,6 +25,9 @@
|
||||||
-export([add_metadata_peername/1, add_metadata_client_id/1]).
|
-export([add_metadata_peername/1, add_metadata_client_id/1]).
|
||||||
-export([add_proc_metadata/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) ->
|
debug(Msg) ->
|
||||||
logger:debug(Msg).
|
logger:debug(Msg).
|
||||||
debug(Format, Args) ->
|
debug(Format, Args) ->
|
||||||
|
@ -74,3 +77,40 @@ add_proc_metadata(Meta) ->
|
||||||
OldMeta ->
|
OldMeta ->
|
||||||
logger:set_process_metadata(maps:merge(OldMeta, Meta))
|
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