【问题标题】:Different logging level for package in json config of Log4j2Log4j2 的 json 配置中包的不同日志记录级别
【发布时间】:2021-01-26 13:21:42
【问题描述】:

如何在 Log4j2 的 json 配置中为包设置不同的日志记录级别?这是我的配置(减去附加程序的定义)

{
  "configuration": {
    "name": "Default2",
    "loggers": {
      "io.netty": {
        "level": "info",
        "appender-ref": [{
          "ref": "Console"
        }]
      },
      "root": {
        "level": "debug",
        "appender-ref": [{
          "ref": "Console"
        }, {
          "ref": "File"
        }]
      }
    }
  }
}

它适用于 root 记录器,但当我添加 io.netty 时失败并出现以下错误

2021-01-26 13:16:04,677 main ERROR Unable to locate plugin for io.netty
2021-01-26 13:16:18,132 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.config.LoggersPlugin for element loggers: java.lang.NullPointerException java.lang.NullPointerException
    at org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor.visit(PluginElementVisitor.java:52)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.generateParameters(PluginBuilder.java:258)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:135)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:245)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:174)
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:664)

我错过了什么?也许 log4j2 不理解通配符设置?

【问题讨论】:

    标签: log4j2


    【解决方案1】:

    原来包前缀应该在“name”属性中指定,在“loggers”元素的key中没有。

    "loggers": {
      "logger": [
        {
          "name": "root",
          "level": "debug",
          "additivity": false,
          "appender-ref": [ { "ref": "Console" }, { "ref": "File" } ]
        },
        {
          "name": "io.netty",
          "level": "info",
          "additivity": false,
          "appender-ref": [ { "ref": "Console" }, { "ref": "File" } ]
        }
      ]
    }
    

    还要注意星号 (io.netty.*) 不起作用。

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 2017-10-01
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多