如何在surefire测试响应中显示log4j输出
在maven中测试失败时,如何在surefire测试响应中显示log4j输出,log4j,maven,surefire,Log4j,Maven,Surefire,在maven中测试失败时,target/surefire reports/test-.xml中的surefire测试报告xml文件仅显示标准输出System.Output或标准错误System.err 当我使用jdkjava.util.logging.Logger时,所有日志都显示在标准错误标记中,但当我使用log4j时,它不会显示 通过FileAppender和ConsoleAppender使用log4j进行日志记录工作正常。它显示在完整的控制台输出中,但不显示在单个测试报告文件中 我可以配
target/surefire reports/test-.xml中的surefire测试报告xml文件仅显示标准输出System.Output
或标准错误System.err
当我使用jdkjava.util.logging.Logger
时,所有日志都显示在标准错误标记中,但当我使用log4j时,它不会显示
通过FileAppender和ConsoleAppender使用log4j进行日志记录工作正常。它显示在完整的控制台输出中,但不显示在单个测试报告文件中
- 我可以配置log4j将其输出重定向到
System.out
,以便在surefire报告中显示吗
- 我可以告诉surefire也显示log4j调试日志吗
- 备选方案一:
对于标准日志记录(System.out/System.err),您可以有以下输出:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
</configuration>
</plugin>
maven surefire插件
2.8.1
真的
这将为每个测试生成输出文件
- 备选方案二:
对于log4j配置,您可以创建一个自定义log4j.xml/log4j.properties,并将其放在src/test/resources下
更新surefire插件版本
使用2.9版时,当使用ConsolePender时,log4j输出显示在
中。您能否澄清您的要求?是否希望在测试期间启用调试?您希望每个测试都有单独的日志文件吗?@cj91日志记录工作正常,但如果每个surefire报告文件都显示其相应测试的日志输出,那就太好了,就像使用java.util.logging时一样。我使用的是surefire 2.6。更新到2.9后,其工作正常,其余部分保持不变。默认的log4j2控制台appender配置往往会导致更新版本的surefire中出现损坏的标准输出警告(至少对于版本2.9至2.11)。发生这种情况时,被破坏的输出会出现在文件中,如2019-06-13T21-39-26964-jvmRun1.dump
。在控制台appender上设置follow=true
,为我们解决了这个问题。