1

私はlog4jにまったく慣れていません。さまざまなアペンダーを参照する 2 つのタグとタグがあることがわかりました。リンクの1つで示唆されているように、つまり log4j.xmlにルートとロガーが必要なのはなぜですか 「唯一の例外は、アプリケーション内のすべてのクラスのメッセージをログに記録するルートロガーです。」私はそれを使用しています(ルートロガー)。

私の場合、レベルエラーを持つすべての例外を外部ファイルに記録する必要があります。だから私は使用しました

<!-- Root Logger -->
<root>
    <priority value="error" />
    <appender-ref ref="console" />
    <appender-ref ref="FILE" />
</root>

しかし、私のログ ファイルにはまだ情報ロガー メッセージが表示されています。エラーメッセージだけをログに記録する必要があるため、解決策を教えてください。間違っている場合は修正できます。

4

1 に答える 1

1

これはlog4jマニュアルからのものです:

特定のロガーにレベルが割り当てられていない場合、割り当てられたレベルを持つ最も近い祖先から 1 つを継承します。より正式には:

レベルの継承 特定のロガー C の継承レベルは、ロガー階層の最初の非 null レベルに等しく、C から始まり、ルート ロガーに向かって階層を上に向かって進みます。

基本的に、これが意味することは、ルート ロガー レベルは、他のロガー レベルが割り当てられていない場合にのみ使用されるということです。

たとえば、アプリケーション ロガーやサード パーティのロガーなど、xml ファイルに他のロガーが含まれている場合があります。これらは、それらを使用するすべてのクラス (アプリケーションや Spring フレームワークなど) のルート ロガー レベルをオーバーライドします。すべてのロガーをエラーに設定すると、表示されるのはエラーだけになります。

于 2013-08-21T16:41:47.330 に答える