2 个日志文件的 log4j2 配置 XML 文件,每个文件都有新文件夹 运行

log4j2 configuration XML file for 2 log files with new folder each run

我对 log4j2 有点陌生。我正在寻找如何为我们的测试自动化框架配置 log4j2.xml 文件。我们想要的是两个日志文件。一种是非技术性的,另一种具有所有技术细节,例如堆栈跟踪信息。这意味着将 INFO 和 ERROR 消息定向到一个文件。所有消息都将指向另一个文件。因此,一个文件将包含另一个文件所做的一切,甚至更多。

我们想要的另一件事是,每次我们 运行 测试时,它都会在带有时间戳的文件夹中创建一组新日志。

例如

目录结构

  • Application Name
    • 2015-12-02 16:52:30
      • logTechnical.log (ALL logs)
      • logSimple.log (INFO and ERROR)
    • 2015-12-02 16:52:30
      • logTechnical.log (ALL logs)
      • logSimple.log (INFO and ERROR)

如果可能的话,在 log4j 中做另一件事。我认为可能需要批处理文件或自定义代码。但是如果我们让它只保留 5 个最新的日志,那么服务器就不会变得混乱。我们不想为此使用滚动日志文件。谢谢您的帮助。

以下配置创建目录和文件,但不删除旧目录:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <File name="Simple" 
          fileName="app/${date:yyyy-MM-dd HHmmss}/logSimple.log">
      <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
      <Filters>
        <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL" />
        <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="NEUTRAL" />
        <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL" />
        <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
      </Filters>
    </File>
    <File name="Technical" 
          fileName="app/${date:yyyy-MM-dd HHmmss}/logTechnical.log">
      <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
    </File>
  </Appenders>
  <Loggers>
    <Root level="all">
      <AppenderRef ref="Simple" />
      <AppenderRef ref="Technical" />
    </Root>
  </Loggers>
</Configuration>