java - log4j2 配置 XML 文件,用于 2 个日志文件,每次运行都有新文件夹

标签 java logging junit log4j2

我对 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>

关于java - log4j2 配置 XML 文件,用于 2 个日志文件,每次运行都有新文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28092029/

相关文章:

java - Spring Boot 集成测试扫描问题

c++ - 无论如何将以下内容编写为 C++ 宏?

testing - JUnit 使用 Spring MVC 测试 web.xml

java - JUnit 如何测试 "printlist"?

java - Eclipse JUnit 返回 ClassNotFoundException?

java - 如何使用 Java 中的功能标记为不同环境启用不同配置

java - jackson 2.1.3 的 web.xml

java - JMF + mp3plugin.jar mp3 文件无法播放

debugging - 如何记录SQLalchemy中返回的SQL语句和行以帮助调试?

Python日志记录,如何将信息写入2个单独的