イベントのロギングにlog4j 2.5
を使用しているTomcatコンテナでWARデプロイメントを実行しています。ここでは、配備のlog4j2.xml設定を変更してログファイルを24時間ごとにロールオーバーさせるようにしましたが、この新しい設定では、ファイルのロールオーバーは期待どおりに行われていません。log4j 2ローリングファイルがローリングされない
設定例:
<RollingFile name="file"
fileName="${sys:catalina.base}/logs/${web:contextPath}.log"
filePattern="${sys:catalina.base}/logs/${web:contextPath}-%d{dd-MMM-yyyy}.log"
append="true">
<PatternLayout pattern="%d{dd-MMM-yyyy HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" >
<header>LOG START DATE=${date:dd-MMM-yyyy HH:mm:ss.SSS} APP=${web:contextPath} TOMCAT=${env:HOSTNAME}:${env:CONNECTOR_PORT}${sys:line.separator}</header>
<footer>LOG END DATE=${date:dd-MMM-yyyy HH:mm:ss.SSS} APP=${web:contextPath} TOMCAT=${env:HOSTNAME}:${env:CONNECTOR_PORT}${sys:line.separator}</footer>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
任意のアイデアロールオーバーが行われていない理由?
注:同じ構成が、<CronTriggeringPolicy schedule="0 0 0 * * ?" />
代わりのTimeBasedTriggeringPolicy
、この場合には、ロールオーバーを行いますが、とは、ロールオーバーのファイルは、ファイル名とNOT昨日の日付で今日の日付で作成されます。
注2:ロールオーバーを24時間ごとに行う同様の構成の他の展開がありますが、これらの構成では、${web:contextPath}
ではなくファイル名がハードコードされています。このルックアップはRollingFileが機能しない理由と関係がありますか?
--- EDIT ---
UPDATE:私たちは、Tomcatインスタンスは、Linux上で実行されている場合のTomcatインスタンスは、Windows上で実行されているが、されていない場合に設定の上使用してロールオーバー・ファイルにTimeBasedTriggeringPolicyを取得することができます。
私たちは現在、log4j2 v2.5' jarsを使用するよう強制されています。私はWindowsホスティングのTomcatでデプロイメントを実行しました。ウィンドウ上では、セットアップ時と同じようにロールオーバーが正常に機能しました。しかし、TomcatがLinux上で動作しているときはそうではありません。私はWARとTomcatの両方のlibのすべてのjarのバージョンをチェックしました。そして、私はすべてのjarのバージョンがLinuxとWindowsのセットアップの間で一致していることを確信しています。今までLinuxでロールオーバーを実行する唯一の方法は、代わりに 'CronTriggeringPolicy'を使用しており、ロールオーバーファイルの日付が前日のものであることを確認するためにトリガを' '0 59 23 * *?" 'に設定しました。 –
私はLinux上で正常にテストしたので、私の答えを更新しました。どのLinuxを使用していますか? – VivekRatanSinha