Reputation: 105213
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 it?
Upvotes: 19
Views: 18817
Reputation: 5093
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>
Upvotes: 0
Reputation: 105213
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.
Upvotes: 2
Reputation: 68328
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>
Upvotes: 29