具有多个文件添加器的Log4j2 json配置

时间:2019-08-07 04:49:51

标签: java logging configuration log4j2

我有一个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,并抱怨有重复的键。另一个问题是只有一个文件追加器被识别(第一个..)

如何配置单个记录器以将信息级别的日志写入控制台,文件以及存储调试级别消息的第二个文件。

1 个答案:

答案 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"
          }
        ]
      }
    }
  }
}