我有一个log4j2 json配置文件,看来我无法在“添加者”部分中放置多个“文件”添加者。我想做的是用我的log语句记录两个两个文件:一个文件用于信息级别或更高级别,另一个文件用于调试级别。
`"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"}]
}
}
}
}
我希望在logs目录中有两个文件。一个用于信息级日志,另一个用于调试级日志。我希望stdout将信息级别的日志记录到控制台。
相反,我看到编辑器不接受json中定义的两个File Appender,并抱怨有重复的键。另一个问题是只有一个文件追加器被识别(第一个..)
如何配置单个记录器以将信息级别的日志写入控制台,文件以及存储调试级别消息的第二个文件。
答案 0 :(得分:0)
您可以在[]
附加程序定义内使用附加程序数组(File
:
{
"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"
}
]
}
}
}
}