質問

Log4Netドキュメントによると、 RollingFileAppenderは、メッセージが記録されたときにのみログファイルをロールします。このファイルにログインする必要がありますが、毎日別のデータベースにインポートします。ファイルが必要であり、ログファイルからデータベースにデータを変換する必要があるため、データベースアペンダーを使用できません(直接コピーではありません)。問題は、午前0時以降にログアクティビティがない場合、ログがロールバックされないことです。インポーターは前日のファイルを探します(このコードは変更できません)。したがって、アクティビティがなく、ログがロールされていない場合、インポーターはファイルを見つけません。とにかく真夜中にログを強制的にロールして、ウェイクアップして強制的にロールする別のスレッドがありませんか?カスタムアペンダーでこれを実行できますか?できればこれを避けたい。

役に立ちましたか?

解決

同じ構成を使用してダミーのログエントリを書き込む深夜の直後にイベントを発生させるWindowsサービスを作成します。

他のヒント

「どのコードパスがロールオーバールーチンにつながるか」という質問の点から、これについて考える必要があります。そのルーチンに到達する方法がわかったら、それをトリガーする方法を決定できます。

カスタムアペンダーでできますか?もちろん、アペンダー内のコードは、それを介してログインするまで実行されないため、元のコードに戻ります。

「ウェイクアップして強制的にロールする別のスレッドを使用せずに、真夜中にログを強制的にロールする方法はありますか?」コードを実行せずに真夜中にログを強制的にローリングするには?」私はそれについておかしくなったり、あなたをin辱したりしようとはしていません。 :-)

これを解決する最も簡単な方法は、何かを起こしてログを記録し、ファイルを強制的に回転させることです。

RollingFileAppenderのドキュメントに従って設定できます毎日ロールするには、次の構成を参照してください。

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="logfile" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top