Java 带有多个文件附加器的Log4j2 json配置
我有一个log4j2json配置文件,似乎无法在Appender部分中放置多个“file”Appender。我要做的是用我的日志语句记录两个文件:一个文件用于信息级别和更高级别,而另一个文件用于调试级别Java 带有多个文件附加器的Log4j2 json配置,java,logging,configuration,log4j2,Java,Logging,Configuration,Log4j2,我有一个log4j2json配置文件,似乎无法在Appender部分中放置多个“file”Appender。我要做的是用我的日志语句记录两个文件:一个文件用于信息级别和更高级别,而另一个文件用于调试级别 `"configuration": { "appenders": { "Console": { "name": "ConsoleAppender", "target": "SYSTEM_OUT",
`"configuration":
{
"appenders":
{
"Console": {
"name": "ConsoleAppender",
"target": "SYSTEM_OUT",
"PatternLayout": {
"pattern": "%d [%t] %-5p %c - %m%n"
}
},
"File": {
"name":"FileAppenderInfo",
"fileName":"/logs/info-logs.log",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
}
},
"File": {
"name": "FileAppenderDebug",
"fileName": "/logs/debug-logs.log",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
},
"DefaultRolloverStrategy": {
"max": "10"
}
}
},
"loggers": {
"logger": {
"name": "com.nf.eb2b.logging.DPLogger",
"level": "debug",
"appender-ref": [{"ref": "ConsoleAppender", "level":"info"},{"ref": "FileAppenderInfo", "level":"info"}, {"ref": "FileAppenderDebug", "level":"debug"}]
},
"root": {
"AppenderRef": [{"ref": "ConsoleAppender"}]
}
}
}
}
我希望日志目录中有两个文件。一个用于信息级日志,另一个用于调试级日志。我希望stdout将信息级日志记录到控制台
相反,我看到编辑器不接受json中定义的两个文件追加器,并抱怨存在重复的密钥。另一个问题是,只有一个文件附加器被识别(第一个…)
如何配置单个记录器将信息级日志写入控制台、文件以及存储调试级消息的第二个文件。您可以在文件中使用appender的数组([]
)appender定义:
{
"configuration": {
"appenders": {
"Console": {
"name": "ConsoleAppender",
"target": "SYSTEM_OUT",
"PatternLayout": {
"pattern": "%d [%t] %-5p %c - %m%n"
}
},
"File": [
{
"name": "FileAppenderInfo",
"fileName": "/logs/info-logs.log",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
}
},
{
"name": "FileAppenderDebug",
"fileName": "/logs/debug-logs.log",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
},
"DefaultRolloverStrategy": {
"max": "10"
}
}
]
},
"loggers": {
"logger": [
{
"name": "InfoLogger",
"level": "info",
"AppenderRef": [
{
"ref": "FileAppenderInfo"
}
]
},
{
"name": "DebugLogger",
"level": "debug",
"AppenderRef": [
{
"ref": "FileAppenderDebug"
}
]
}
],
"root": {
"AppenderRef": [
{
"ref": "ConsoleAppender"
}
]
}
}
}
}
您可以在文件中使用appender定义的数组([]
):
{
"configuration": {
"appenders": {
"Console": {
"name": "ConsoleAppender",
"target": "SYSTEM_OUT",
"PatternLayout": {
"pattern": "%d [%t] %-5p %c - %m%n"
}
},
"File": [
{
"name": "FileAppenderInfo",
"fileName": "/logs/info-logs.log",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
}
},
{
"name": "FileAppenderDebug",
"fileName": "/logs/debug-logs.log",
"PatternLayout": {
"pattern":"%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"
},
"DefaultRolloverStrategy": {
"max": "10"
}
}
]
},
"loggers": {
"logger": [
{
"name": "InfoLogger",
"level": "info",
"AppenderRef": [
{
"ref": "FileAppenderInfo"
}
]
},
{
"name": "DebugLogger",
"level": "debug",
"AppenderRef": [
{
"ref": "FileAppenderDebug"
}
]
}
],
"root": {
"AppenderRef": [
{
"ref": "ConsoleAppender"
}
]
}
}
}
}
检查下面的答案。它可能会对您有所帮助。我建议您在配置中添加“状态”:“调试”,这样您就可以看到Log4j正在做什么。您解决了这个问题吗?检查以下答案。这可能会对您有所帮助。我建议您在配置中添加“状态”:“调试”,这样您就可以看到Log4j正在做什么。您解决了这个问题吗?