Dropwizard 管理员:更改所有人的日志级别



我的配置是标准的

logging:
# The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
level: INFO
# Logger-specific levels.
loggers:
# Sets the level for 'com.example.app' to DEBUG.
com.example.app: DEBUG
# Redirects SQL logs to a separate file
org.hibernate.SQL:
level: DEBUG

我想将所有记录器的默认日志级别更改为DEBUG.我尝试了以下方法,但没有任何效果(假设管理端口为 1234(:

curl -X POST -d "logger=all&level=DEBUG" localhost:1234/tasks/log-level
curl -X POST -d "level=DEBUG" localhost:1234/tasks/log-level
curl -X POST -d "logger=*&level=DEBUG" localhost:1234/tasks/log-level

当我用-vv运行这些时,例如对于logger=all,我看到Configured logging level for all to DEBUG,但尾部日志没有改变,仍然是 INFO。当然,如果我更改配置并将顶层设置为DEBUG,然后重新启动,我会得到 DEBUG 级别。

命令是什么?

我已经检查了log-level任务的源代码,其主要逻辑是这样实现的:

for (String loggerName : loggerNames) {
((LoggerContext) loggerContext).getLogger(loggerName).setLevel(loggerLevel);
output.println(String.format("Configured logging level for %s to %s", loggerName, loggerLevel));
output.flush();
}

因此,它的实现方式是基于记录器的名称,知道这一点后,我进入了org.slf4j.Logger界面的源代码并找到了以下字段:

String ROOT_LOGGER_NAME = "ROOT";

做这样的POST为我解决了它:

curl -X POST -d "logger=ROOT&level=DEBUG" localhost:8081/tasks/log-level

最新更新