I'm trying to log all DEBUG messages to console during testing in maven. For this purpose I created a file src/test/resources/log4j.properties, which is going to override the configuration I already have in src/main/resources/log4j.properties. Unfortunately such an overriding is not happening. Why and how to fix i开发者_运维问答t?
Rename your test configuration file to e.g. log4j-surefire.properties and configure log4j to pick it up during surefire execution:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.6</version>
<configuration>
<systemPropertyVariables>
<log4j.configuration>file:${project.build.testOutputDirectory}/log4j-surefire.properties</log4j.configuration>
</systemPropertyVariables>
</configuration>
</plugin>
It should work as it is, and it works. The problem is somewhere else.
ps. I had a mess with loggers in my classpath: jog4j, slf4j, logback (from other dependencies). As I understand, all of them are in conflict. I didn't clean this mess yet, and I still don't know how to make all packages to use one logging facility and one configuration.
Beware of changed version for that, with 2.17.1 of log4j at least, you'll have to change it from log4j.configuration to log4j.configurationFile to avoid having
ERROR StatusLogger Reconfiguration failed: No configuration found for '18b4aac2' at 'null' in 'null'
Here an example
<plugin>
<!-- DOC http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html -->
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.version}</version>
<!-- enables java assertions for tests -->
<configuration>
<enableAssertions>true</enableAssertions>
<systemPropertyVariables>
<log4j.configurationFile>src/test/resources/log4j2_for_surefire.xml</log4j.configurationFile>
</systemPropertyVariables>
</configuration>
</plugin>
加载中,请稍侯......
精彩评论