Thursday, 16 October 2008

Maven Surefire (JUnit) specific log4j configuration

To have a log4j configuration specific to your tests, for example if your normal log4 configuration write the logs in a file on server for a webapp, do the following:

  1. create a file src/test/resources/test-log4j.properties containing the configuration of log4j for your tests e.g. :

    log4j.rootLogger=DEBUG, R
    log4j.appender.R=org.apache.log4j.ConsoleAppender
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{3}:%L - %m%n

  2. Edit your pom.xml like this:
    1. <build>  
    2.  ...  
    3.  <plugins>  
    4.   
    5.    <plugin>  
    6.      <artifactid>maven-surefire-plugin</artifactid>  
    7.      <version>2.3</version>  
    8.      <configuration>  
    9.        <systemproperties>  
    10.          <property>  
    11.            <!-- Specific log4j config for tests -->  
    12.            <name>log4j.configuration</name>  
    13.            <value>test-log4j.properties</value>  
    14.          </property>  
    15.        </systemproperties>  
    16.      </configuration>  
    17.    </plugin>  
    18.    ...  
    19.  </plugins>  
    20. </build>  

  3. Note: my normal log4j.properties is located in src/main/webapp/WEB-INF/classes/.

0 comments: