0

私はこのようなアペンダーを持っています。

<appender name="Action.FileAppender" class="ch.qos.logback.core.FileAppender">
<file>logs\\${date}\\${thread}.log</file>
<encoder>
<pattern>%level - %msg%n</pattern>
</encoder>
</appender>

${date} と ${thread} を現在の日付と現在のスレッド名にしたい。どうすればできますか?

4

2 に答える 2

2

SiftingAppenderが必要かもしれません。あなたの場合、日付とスレッド名になる「識別子」に従ってロギングイベントを分離するように設計されています。

于 2010-10-04T13:09:28.933 に答える
0

実行時に出力ファイル名を動的に設定したいということですか? 私の知る限り、構成を介して直接行うことはできません。2 つの回避策があります。

  • コードから出力ファイル名を動的に設定する、または
  • Mapped Diagnostic Contextを使用して、同じログ ファイル内のスレッド固有のデータをログ メッセージの先頭に追加します。

最初の方法は、さまざまなスレッドからさまざまなインスタンスを呼び出すことができるクラスに対して、インスタンス固有のロガーとアペンダーが必要になるため、かなり面倒で無駄が多くなります。それでも、同じオブジェクトが複数のスレッド間で共有されている場合はどうなるでしょうか?

2 つ目は、より自然でシンプルです。さらに、単純なシェル スクリプトなどを使用した後処理を行うことで、異なるスレッドに属するログを個別のログ ファイルにフィルター処理することもできます。

于 2010-10-04T11:52:30.497 に答える