【问题标题】:Dropwizard Admin: Change loglevel for allDropwizard 管理员:更改所有日志级别
【发布时间】:2017-07-21 17:52:59
【问题描述】:

我的配置是标准的

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 级别。

命令是什么?

【问题讨论】:

    标签: java logging dropwizard


    【解决方案1】:

    我为log-level 任务设置了checked the source code,它的主要逻辑是这样实现的:

    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
    

    【讨论】:

    • 请注意,这是 0.9.3 之后的版本,不确定是哪个版本。如果它不在你的版本中,你会得到 404。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多