日付/時刻または指定された最大サイズの後にログをロールするのではなく、「log.txt」を「log.txt.1」にコピーしてから log.txt をクリアする「ResetLog」のようなメソッドを呼び出せるようにしたいと考えています。 .
RollingFileAppender ではなく、FileAppender で次のようなことを行うことで、それを実装しようとしました。
var appenders = log4net.LogManager.GetRepository().GetAppenders();
foreach (var appender in appenders) {
var fa = appender as log4net.Appender.FileAppender;
if (fa != null) {
string logfile = fa.File;
fa.Close();
string new_file_path = CreateNextLogFile(logfile);
fa.File = new_file_path;
fa.ActivateOptions();
}
}
ファイルが閉じられ、CreateNextLogFile() によって名前が変更されます。次に、新しいログ ファイルを作成し、それを使用するように FileAppender を設定します。ただし、ActivateOptions が先に進み、目的の設定で FileAppender を再構成すると考えました。log4net のドキュメントを調べましたが、FileAppender を閉じた後に再度開くことができるパブリック メソッドは他にありません。ロールオーバーを実装する方法を推奨できる人はいますか? RollingFileAppender にこのようなものがあればいいのですが、そのドキュメントにも役立つものは何もありませんでした。