【问题标题】:log4j2 configuration XML file for 2 log files with new folder each runlog4j2 配置 XML 文件,用于 2 个日志文件,每次运行都有新文件夹
【发布时间】:2015-03-21 10:29:16
【问题描述】:

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

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

例如

目录结构

  • 应用程序名称
    • 2015-12-02 16:52:30
      • logTechnical.log(所有日志)
      • logSimple.log(信息和错误)
    • 2015-12-02 16:52:30
      • logTechnical.log(所有日志)
      • logSimple.log(信息和错误)

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

【问题讨论】:

    标签: java logging junit log4j2


    【解决方案1】:

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

    <?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>
    

    【讨论】:

    • 非常感谢。就像我希望的那样工作。
    • 还有一件事,我注意到了这一点。有没有办法强制创建日志文件?我发现例如,如果一条警告消息通过,然后在稍后通过一条 INFO 消息,它会创建两个单独的文件夹,因为它们的日志发生在不同的时间。有没有办法强制 log4j 创建一个空白日志文件,所以我总是可以将两个日志文件放在同一个文件夹中?谢谢
    • 每次运行时都会创建空文件(每个在单独的JVM中,每次加载log4j2配置)时没有记录任何消息。我在 Windows 上。
    • 好的,谢谢。这很奇怪,因为我有一个实例,它在不同的文件夹中创建了它们。
    • 您好,我也在使用 Selenium 进行测试,我希望将屏幕截图与日志存储在同一目录中,以用于当前运行。您知道如何获取日志目录或获取用于目录名称的时间/日期吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2014-12-24
    • 2022-01-20
    • 2012-10-25
    • 1970-01-01
    • 2019-04-18
    • 2019-09-30
    相关资源
    最近更新 更多