27

現在、log4j を使用するプロジェクトに取り組んでいます。テストケース (junit) を実行していて、すべての値が正しいかどうかを確認できるように、ログ レベルをトレースに設定したいと考えています。プロジェクトでロギングを使用するクラスには、次のような行が含まれます。

private static final Log LOG = LogFactory.getLog(MatchTaskTest.class);

このような like を使用して、実際のデバッグを行います

LOG.trace("value");

私はこれまでlog4jを使用したことがありません。できればEclipseの実行構成ダイアログでパラメーターを定義するだけで、テストケースのためだけにログレベルを変更する方法を知っている人はいますか?

4

7 に答える 7

21

別の構成ファイルの使用

おそらく、別の構成ファイルを指すことができます。

java -Dlog4j.configuration=config file yourApp

どこ:

  • config、構成のファイル、たとえばlog4j.properties またはlog4j.xml
  • file、ログファイル、例えばmyApp.log
  • yourApp、あなたのアプリ、例えばMyAppGUI

または、クラスを使用できます

java -Dlog4j.configurationClass=config class yourApp

どこ:

  • config、構成のファイル、たとえばlog4j.propertiesまたはlog4j.xml
  • classのようなカスタマイズされた初期化クラスはLogManagerorg.apache.log4j.spi.Configurator
  • yourApp、あなたのアプリ、例えばMyAppGUI

詳細については、Apache log4j 1.2 -デフォルトの初期化手順セクションの log4jの簡単な紹介を参照してください。

プログラムによるレベルの変更

Loggerさらに、次のようなクラスを提供するメソッドを使用することもできますpublic void setLevel(Level level)

Logger.getRootLogger().setLevel(Level.TRACE);

テスト目的でのみ必要なので、それらを使用できます。ただし、クライアント コードでは使用しないことをお勧めします。これは、ハード コードされた既定の構成パラメーターが上書きされるためです。最良の方法は、外部構成ファイルを使用することです。

于 2012-05-17T23:35:58.580 に答える
19

あなたのjunitクラスに入れます:

Logger.getRootLogger().setLevel(Level.TRACE);

テストされたメソッドの実行前のどこか。ルート ロガーのしきい値レベルを TRACE に設定します。

于 2012-05-17T23:38:18.027 に答える
2

Maven を使用している場合は、次の 2 つの log4j 構成ファイルを使用できます。

  • 1 つは src/main/resources にあり、本番環境のログ構成が含まれています
  • テスト時のログ設定を含む src/test/resources の 1 つ

Maven は、テスト時に後者を自動的に使用し、前者をアーティファクト (JAR、WAR など) にバンドルして、本番環境で使用できるようにします。コマンド ライン スイッチなどをいじる必要はありません。

于 2012-11-07T02:07:16.830 に答える
0

上記のいくつかがうまくいかなかった理由がわかりません。(設定ファイルを書きたくない)。以下は私のために働く

Logger log1 = Deencapsulation.getField(Some.class,"logger");
log1.setLevel(Level.DEBUG);
于 2016-12-22T12:44:19.730 に答える
0

これは不可能だと思います。

構成ファイルを使用すると、各メッセージがどのレベルでログに記録されるかではなく、実際にログに表示されるログ メッセージを構成できます。これは理にかなっています - 構成はメッセージのレベルに影響を与えるべきではありません。

javadocには、各ログ レベルのメソッドと、優先度を考慮した一般的なログ メソッドがあるため、デフォルトを設定する必要があるかどうかさえわかりません。

を介してコマンド ラインで構成ファイルを明示的に-Dlog4j.configuration=<FILE_PATH>設定できるため、そのテスト ケース用に特定の構成をセットアップできます。

于 2012-05-17T23:18:15.690 に答える