如何在surefire测试响应中显示log4j输出

如何在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进行日志记录工作正常。它显示在完整的控制台输出中,但不显示在单个测试报告文件中 我可以配

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

当我使用jdk
java.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
      ,为我们解决了这个问题。