Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to show log4j output in surefire test resports

When a test fails in maven the surefire test report xml files in target/surefire-reports/TEST-<test-name>.xml only shows the Standard Output System.output or Standard Error System.err

When I use the jdk java.util.logging.Logger all the logging shows in the Standard Error <system-err> tag, but it does not show when I use log4j.

The logging with log4j is working fine through a FileAppender and a ConsoleAppender. It shows in the full console output, but not on the individual test report files.

  • Can I configure log4j to redirect its output to System.out so it shows in surefire rerports?
  • Can I tell surefire to also show the log4j debug logging?
like image 539
Serxipc Avatar asked Dec 07 '10 18:12

Serxipc


2 Answers

  • Option one:

    For standard logging (System.out/System.err), you can have the following output:

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

    This will generate output files for each of the tests.

  • Option two:

    For a log4j configuration you can create a custom log4j.xml / log4j.properties and simply place it under src/test/resources.

like image 131
carlspring Avatar answered Sep 27 '22 20:09

carlspring


Update the surefire plugin version.

Using version 2.9 the log4j output appears in <system-out> when using the ConsoleAppender

like image 43
Serxipc Avatar answered Sep 27 '22 19:09

Serxipc