0

負荷の高いログの下で log4j のログに問題が発生しています。 定期的に (1 時間ごとに最大 4 ~ 20 分) ロールアウトされて圧縮されたファイルの一部のログが失われます。

構成:

<appender name="MY_LOG" class="org.apache.log4j.appender.TimeAndSizeRollingAppender">
    <param name="File"   value="../logs/mylog.log" />
    <param name="DatePattern" value=".yyyy-MM-dd"/>
    <param name="MaxFileSize" value="40MB"/>
    <param name="MaxRollFileCount" value="100"/>
    <param name="ScavengeInterval" value="300000"/>
    <param name="encoding" value="UTF-8" />
    <param name="CompressionAlgorithm" value="ZIP"/>
    <param name="CompressionMinQueueSize" value="5"/>
    <param name="CompressionThreadPriority" value="1"/>
    <param name="CompressionLevel" value="1"/>
    <param name="CompressionUseBlockingQueue" value="true"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p %22.22t| %22.22c{1}| %m%n"/>
    </layout>
</appender>

<param name="CompressionUseBlockingQueue" value="true"/>ログが失われるのを防ぐために、プロパティが追加されました。ファイル (5 つの一時ファイルがある場合) がマージされて圧縮されている間、ログが失われると考えていました (今でもそうです)。それらが何らかの形で上書きされる可能性があること。ただし、このプロパティは機能しませんでした。

問題を探す場所や構成を変更する方法がわからないため、ログが失われたり上書きされたりすることはありません。

私たちが試すかもしれない提案はありますか?

ありがとう

4

1 に答える 1

1

ログのコピーを一時的な場所 (スペースに制約がない場合は同じ場所) に作成してみてください。そしてそれを圧縮します。

圧縮が行われている時点で、ロガー バッファが書き戻そうとし、失敗している可能性があります。log4j はサイレントに失敗するため、このようなエラーを追跡することは困難です。

于 2013-09-09T07:50:35.437 に答える