私はクラスを持っています:MyClass
private static final Log LOG = LogFactory.getLog(MyClass.class);
私のコードのどこかで私LOG.trace()
はLOG.isTraceEnabled()
そして、Junit4を使用するそのMyClassのテスト
テストはmaven(2.2.1)によって正常に実行され、他のログをログに記録します(log4j.xmlをlevel =に設定しましたINFO
)
しかし、maven 3.0.3に切り替えると、log4j.xmlがオーバーライドされるか、どこにあるべきかを示さず、すべてのレベルのデバッグが有効になります(デバッグ、トレースなど)。
Maven 2.2.1で機能するため、可能であればトレースロギングを無効にします。私ができるハッキーな方法があります、私は知っています、しかし私はこれがなぜ起こっているのか理解したいですか?
pom.xmlからの主要な依存関係のいくつか
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
</plugin>
テストは他のテストクラスで実行されます。(マルチモジュールプロジェクト)実行する mvn clean test -Dtest=MyClassTest
と、ロギングが混乱することはありませんが、(すべてのテストに対して)mvn clean testを実行すると、ロギングは正常に機能しなくなります(これは、Maven 3の場合にのみ当てはまります)。