2

ハードウェアによってトリガーされたときにのみ実行されるアプリケーションがあります。まれな本番環境の問題のデバッグに役立つログを生成するために、最近log4cxxも追加したレガシーc++アプリケーション。もちろん、毎日のログファイルが必要でした。

ローリングファイルを取得したことがないことがわかりました。

問題をデバッグするために、日ではなく分にロールオーバーするように設定しました。分の先頭から数秒以内にプログラムが呼び出された場合、ファイルはロールオーバーすることがわかりました。分のトップから5秒以上経過してから呼び出された場合、ロールオーバーは発生しませんでした。

テストでは、プログラムの実行に約5秒かかります。

必要に応じて、プログラムの起動時にlog4でファイルをロールオーバーする方法はありますか?

つまり、6分目にログを記録し、50分まで再度実行しない場合は、6分に追加するだけでなく、50分までログを開始する前にログファイルをロールオーバーします。

4

3 に答える 3

1

試す {

log4j.rootLogger=debug, R

# Pattern to output the caller's file name and line number.

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.DatePattern=test-%Y-%m-%d.log

}

于 2012-02-22T15:30:02.193 に答える
1

log4cxx実装のバグが判明しました。:(

于 2012-03-13T23:47:07.350 に答える
1

DailyRollingFileAppender私の場合も(log4cxx 0.10.0で)機能しなかったので、RollingFileAppenderプラスを使用することになりましたTimeBasedRollingPolicy

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="roll" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="FileNamePattern" value="roll.%d{yyyy-MM-dd}.log"/>
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%p %t %c - %m%n"/>
    </layout>
    <param name="Append" value="true"/>
  </appender>
  <root>
    <priority value="ALL"/>
    <appender-ref ref="roll"/>
  </root>
</log4j:configuration>

ポイントは指定しない<param name="file">か、ロールオーバーしません(またStaticLogFileName、元のlog4jのようにparamを認識しません)。

于 2016-06-23T06:36:43.273 に答える