【问题标题】:How to show log4j output in surefire test resports如何在surefire测试报告中显示log4j输出
【发布时间】:2010-12-07 18:05:30
【问题描述】:

当 maven 中的测试失败时,target/surefire-reports/TEST-<test-name>.xml 中的surefire 测试报告 xml 文件仅显示标准输出System.output 或标准错误System.err

当我使用 jdk java.util.logging.Logger 时,所有日志记录都显示在标准错误 <system-err> tag 中,但当我使用 log4j 时它不显示。

通过 FileAppender 和 ConsoleAppender 使用 log4j 进行日志记录工作正常。它显示在完整的控制台输出中,但不显示在单个测试报告文件中。

  • 我可以将 log4j 配置为将其输出重定向到 System.out 以便它显示在安全报告中吗?
  • 我可以告诉 Surefire 也显示 log4j 调试日志吗?

【问题讨论】:

  • 你能澄清你的要求吗?您想在测试期间启用调试吗?您想要每个测试的单独日志文件吗?
  • @cj91 日志记录工作正常,但如果每个安全报告文件都显示其相应测试的日志输出,那就太好了,就像使用 java.util.logging 时一样。跨度>

标签: log4j maven surefire


【解决方案1】:
  • 选项一:

    对于标准日志记录(System.out/System.err),您可以有以下输出:

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8.1</version>
    
            <configuration>
                <redirectTestOutputToFile>true</redirectTestOutputToFile>
            </configuration>
        </plugin>
    

    这将为每个测试生成输出文件。

  • 选项二:

    对于 log4j 配置,您可以创建自定义 log4j.xml / log4j.properties 并将其放在 src/test/resources 下。

【讨论】:

  • 我使用的是surefire 2.6。更新到 2.9 后,它按预期工作,其余部分保持不变。
  • 默认的 log4j2 控制台附加程序配置往往会在新版本的 surefire 中导致 Corrupted STDOUT 警告(至少对于 2.9 到 2.11 版本)。发生这种情况时,损坏的输出最终会出现在2019-06-13T21-39-26_964-jvmRun1.dump 之类的文件中。在控制台附加程序上设置follow=true 为我们解决了这个问题。
【解决方案2】:

更新surefire插件版本。

使用 2.9 版时,使用 ConsoleAppender 时,log4j 输出出现在 &lt;system-out&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多