web-dev-qa-db-ja.com

Log4jファイルを圧縮する

ログファイルを圧縮することは可能ですか(RollingFileAppenderを使用して行います)?

36
EK.

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の詳細については、こちらをご覧ください。

http://logging.Apache.org/log4j/companions/extras/apidocs/org/Apache/log4j/rolling/TimeBasedRollingPolicy.html

助けたことを願っています

42
fasseg

私はこの素晴らしい答えに思いつきましたが、その後少し調査を続け、log4j 2がリリースされました!

これで、基本ライブラリなどを使用して圧縮を行うことができます...それは素晴らしいです!

RollingFileAppender -timeBasedとsizeBasedの両方のローリングと圧縮を備えたものを探していました。また、syslog4jライブラリも削除できます。

本当に必要な場合を除き、log4j 1.2 + extrasを使用しないでください。

16
Daren

私はこれがあなたの質問に正確に答えていないことを知っていますが、別の解決策を提案します。

これを処理する方法は、1日の終わりにバッチプロセスを実行して、以前のログファイルを今日の日付に圧縮し、1週間前のログファイルをすべて削除してから、それらを別のファイルサーバーにコピーすることです。このように、アプリケーションはこれを行うCPUサイクルを消費する必要がなく、サーバー上には1週間以内のログがあり、別のファイルサーバー上には古いログファイルがあります。

3
Romain Hippeau

私が見る他の唯一のものは、log4jを1.3.15/1.4以上にアップグレードし、TimeBasedRollingPolicyローラーを使用して自動圧縮を有効にすることですが、それは本質的にlog4jのアップグレードを必要とします(そしてアプリの互換性も)

Hmmm ..は、ファイルがロールされたらlog4jにコマンドを実行させることです。そのため、gzipの代わりに、bzipやlzopなどの他の圧縮ロジックを使用できます。今日log4jにこの機能がある場合、これは別のアプローチになります。

1
Nikhil Mulley