6

中間の .log ファイルを作成せずに gzip されたログ ファイルを作成するように log4j をセットアップすることは可能ですか? いくつかのローリング戦略 (日付によるローリングなど) がありますが、最初に解凍されたファイルが作成されます。

4

3 に答える 3

3

最適化された独自の実装バージョンを実装することで、org.apache.log4j.RollingFileAppender を拡張し、現在のロジックをオーバーライドする独自の Appender を作成できます。現在のファイルを圧縮し、別のログ ファイルへのローリングを破棄します (RollingFileAppender の既定の実装)。例:

log4j.appender.{name}=br.com.sample.MyZipRollingFileAppender

java.util.zip.ZipOutputStream または java.util.zip.GZIPOutputStream を使用して実装例を「ググって」検索し、現在のファイルを圧縮できます。

于 2013-05-21T20:36:56.257 に答える
1

このライターを使用してこのタスクを解決することができます: http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/coyote/http11/filters/FlushableGZIPOutputStream.html および次のようなコード

Writer writer = new OutputStreamWriter(new FlushableGZIPOutputStream(newFileOutputStream(logFileName), LINES_TO_FLUSH));
appender.setWriter(writer);

機能しますが、いくつかの欠点があります。圧縮率が低く、このファイルを常に解凍できるとは限りません。それでローテーションに戻りました。

于 2013-08-09T09:55:42.327 に答える
0

org.apache.log4j.rolling.TimeBasedRollingPolicy を試すことができます。

<appender...>
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="FileNamePattern" value="/wombat/log.%d{yyyy-MM}**.gz**"/>
    </rollingPolicy>
</appender>
于 2013-05-21T20:35:43.557 に答える