Log4j2 json 配置中包的不同日志记录级别
Different logging level for package in json config of Log4j2
如何在 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 不理解通配符设置?
原来应该在“名称”中指定包前缀属性,而不是在“loggers”元素的键中指定。
"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.*
) 不起作用。
如何在 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 不理解通配符设置?
原来应该在“名称”中指定包前缀属性,而不是在“loggers”元素的键中指定。
"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.*
) 不起作用。