ログファイルを圧縮することは可能ですか(RollingFileAppenderを使用して行います)?
log4j extras はそれをサポートしています:
rollingFileAppender構成に次を追加し、ファイル名の末尾が。gzの場合、ログファイルが自動的に圧縮されます。
<appender...>
<rollingPolicy class="org.Apache.log4j.rolling.TimeBasedRollingPolicy">
<param name="FileNamePattern" value="/wombat/foo.%d{yyyy-MM}.gz"/>
</rollingPolicy>
</appender>
javadocの詳細については、こちらをご覧ください。
助けたことを願っています
私はこの素晴らしい答えに思いつきましたが、その後少し調査を続け、log4j 2がリリースされました!
これで、基本ライブラリなどを使用して圧縮を行うことができます...それは素晴らしいです!
RollingFileAppender -timeBasedとsizeBasedの両方のローリングと圧縮を備えたものを探していました。また、syslog4jライブラリも削除できます。
本当に必要な場合を除き、log4j 1.2 + extrasを使用しないでください。
私はこれがあなたの質問に正確に答えていないことを知っていますが、別の解決策を提案します。
これを処理する方法は、1日の終わりにバッチプロセスを実行して、以前のログファイルを今日の日付に圧縮し、1週間前のログファイルをすべて削除してから、それらを別のファイルサーバーにコピーすることです。このように、アプリケーションはこれを行うCPUサイクルを消費する必要がなく、サーバー上には1週間以内のログがあり、別のファイルサーバー上には古いログファイルがあります。
私が見る他の唯一のものは、log4jを1.3.15/1.4以上にアップグレードし、TimeBasedRollingPolicyローラーを使用して自動圧縮を有効にすることですが、それは本質的にlog4jのアップグレードを必要とします(そしてアプリの互換性も)
Hmmm ..は、ファイルがロールされたらlog4jにコマンドを実行させることです。そのため、gzipの代わりに、bzipやlzopなどの他の圧縮ロジックを使用できます。今日log4jにこの機能がある場合、これは別のアプローチになります。