web-dev-qa-db-ja.com

log4j1.2からlog4j2への移行では、DailyRollingFileAppenderクラスをどうしますか?

Javaプロジェクトをlog4j1.2を使用してロギングすることからlog4j2を使用することへの移行に取り組んでいます。

log4j 1.xにはクラスがあります org.Apache.log4j.DailyRollingFileAppender これは私のプロジェクトのlog4j.properties構成ファイルに記載されています。同じ名前DailyRollingFileAppenderのクラスはlog4j2に存在しなくなりました。DailyRollingFileAppenderの役割を他のクラスまたはlog4j2の置換構成または実装に置き換えることができるかどうか疑問に思います。

移行ガイドでは、アプリケーションをlog4j 2に移行するには、Appendersなどのlog4j1.xの内部のメソッドやクラスにアクセスしてはならないことを強調しています。しかし、移行を行うには、DailyRollingFileAppenderに何ができるでしょうか。それをいくつかのカスタム構成、またはlog4j 2のクラスの組み合わせに置き換えることは可能ですか? 移行ガイドのいくつかの構成例 、特にFileAppenderの構成例がありますが、DailyRollingFileAppenderはどうですか?これは、基本的なFileAppenderにかなり近いものです。

log4j 1.2 API Javadoc から、クラスorg.Apache.log4j.DailyRollingFileAppender

DailyRollingFileAppenderはFileAppenderを拡張して、基になるファイルがユーザーが選択した頻度でロールオーバーされるようにします。 DailyRollingFileAppenderは、同期の問題とデータの損失を示すことが確認されています。 log4jエクストラコンパニオンには、新しいデプロイメントで検討する必要があり、org.Apache.log4j.rolling.RollingFileAppenderのドキュメントで説明されている代替案が含まれています。

19
Meng Lu

RollingFileアペンダーを探しています

<RollingFile name="DAILY_LOG" fileName="log/daily.log"
                 filePattern="log/%d{ddMMyyyy}_daily.log"
                 >
      <PatternLayout pattern="%d [%7r] %5p - %c - %m%n"/>
      <Policies>
        <TimeBasedTriggeringPolicy interval="1"/>
      </Policies>                               
</RollingFile>

前のサンプルは日ごとにロールオーバーします。間隔は1単位で、ファイルパターンの日付ルックアップの最小単位によって決定されます。つまり、日付パターンがd{MMyyyy}の場合、interval = 1は1か月のロールオーバー期間に対応します。

現在、特定の日付や経過時間などを過ぎて保持されるログファイルの数を制限することはサポートされていないことに注意してください。期間ごとのログファイルの数のみを制限できます。

21
alan7678