52

私はログバックで SLF4J を喜んで使用しており、ROOTロガーには2 つのアペンダーを使用しています。

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>

両方のアペンダーに異なるログレベルを設定するにはどうすればよいでしょうか? すべての ROOT-logger メッセージが必要です。

  • DEBUG -STDOUT のレベル
  • INFO -FILE のレベル

すべてのログは出力の一部である必要があります (したがって ROOT ロガーが必要です)。

4

2 に答える 2

60

複数のルートロガーを持つことはないので、あなたの質問は少し誤解を招きます。あなたが探しているのは、各アペンダーがログに記録するイベントを微調整する方法です。

そのために、各アペンダーに ThresholdFilter を追加します。

http://logback.qos.ch/manual/filters.html#thresholdFilter

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>INFO</level>
</filter>

FILE-appender にはレベル INFO を設定し、STDOUT には DEBUG を設定します。

編集:これが間違っているという他の回答の請求に異議を唱える必要があります:はい、構成に複数のルート要素を含めることができます。ただし、それは複数のルートロガーを作成しません。これは、質問のタイトルが求めているものです。また、logback のマニュアルでは、http://logback.qos.ch/manual/configuration.html#syntax の下に次のように記載されています(私の強調表示):

それにもかかわらず、構成ファイルの非常に基本的な構造は、 < configuration > 要素、その後に 0 個以上の < appender > 要素が続き、その後に 0 個以上の < logger > 要素が続き、その後に多くても 1 つの< root > 要素が続くという形で記述できます。

うまくいくかもしれませんが、少なくとも慣習に反しています。

于 2013-09-16T12:27:04.660 に答える