LOG4JでSLF4Jを使用していますが、構成は通常log4j.properties
、およびログレベルをINFOに設定します。
ただし、テスト中にログをDEBUGに設定したいと思います。
これを自動化する方法がわかりません。log4j.tests.properties
テスト中にのみロードされます。
そこで、テストセットアップ(@BeforeClass)でこれをプログラムで実行しようとしました。
LogManager.getRootLogger().setLevel(Level.ALL);
成功なし...
私はこれらのバージョンを使用しています:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
どうすればこの結果を達成できますか?
編集:私は十分に明確ではなかったと思います。この質問は、正しいログレベルの設定に関するものではありません... Junitテストの実行時にDEBUGログレベルを設定し、他の状況でINFOログレベルを設定することに関するものです。これを自動化したい。
JVMに別のログ実装を提供する必要はありません。
ロギングコードは、クラスパスを使用してlog4j.properties
ファイルを検索します。そのため、テストlog4j.properties
ファイルがリリースファイルの前にある場所にあることを確認するだけです。
Mavenを使用します。Mavenは、ディレクトリ内にファイルを配置して、それを簡単にします。私のリリースlog4j.properties
はディレクトリsrc/main/resources
に入ります。私のテストバージョンはsrc/test/resources
に入ります。 Eclipseビルドパス(クラスパス)は、src/test/resources
の前にsrc/main/resources
を検索するように設定されているため、ユニットテストではテストファイルを使用します。 JAR(またはWAR)ビルド命令は、src/main/resources
のファイルを使用します。
通常、LEVEL.FINESTはそれを行う必要がありますが、 http://saltnlight5.blogspot.mx/2013/08/how-to-configure-slf4j-with-different.html を見てくださいロギングフレームワークの実装に関する考慮事項を参照してください。
setAllLevels
メソッドを持つorg.Apache.logging.log4j.core.config.Configurator
を使用できます。
テストでは、@Before
メソッドで使用できます。
@Before
public void changeLogLevel() {
Configurator.setAllLevels("", Level.ALL);
}
注:バインディングでテスト org.slf4j:slf4j-log4j12:1.7.26