プログラムでC#でローリングファイルアペンダーを作成しようとしています。VisualStudios2008を使用しています。log4netバージョン1.2.0.30714を使用しています。
私の主な問題は、ローリングファイルアペンダーがファイルアペンダーのように機能していることです。ログファイルは、私が指定したサイズまたは日付の基準に基づいてロールされません。以下は私の構成です。洞察や提案をいただければ幸いです。コードの下には、私が試したアイデアのいくつかがあります。
string path = "Logs\";
string filename = "test.log";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
log4net.Layout.PatternLayout patternLayout = new log4net.Layout.PatternLayout("[%d] %l %n - %m %n%n");
patternLayout.ActivateOptions();
RollingFileAppender appender = new RollingFileAppender();
appender.Threshold = Level.ALL;
appender.StaticLogFileName = false;
appender.CountDirection = 0; // Makes the logs count 1, 2, 3
appender.RollingStyle = RollingFileAppender.RollingMode.Size;
appender.MaximumFileSize = "1KB";
appender.MaxFileSize = 1 * 1024; // 1 KB
appender.MaxSizeRollBackups = 5;
appender.DatePattern = "yy.MM.dd.hh.mm.ss";
appender.Layout = patternLayout;
appender.Name = "QTracImportHelper";
appender.ImmediateFlush = true;
appender.File = filename;
appender.Writer = new StreamWriter(path + filename, true);
appender.ActivateOptions();
Hierarchy hierarchy = (Hierarchy)LogManager.GetLoggerRepository();
hierarchy.Root.AddAppender(appender);
hierarchy.Configured = true;
StreamWriterを削除すると、ファイルはまったく作成されませんが、例外はありません。ファイル名を削除すると、log4net内から例外が発生します。MaxFileSizeとMaximumFileSizeの両方を使用して無駄にし、ローリングスタイルをDateとCompositeに変更してみました。さらに、ライターストリームの形式が正しくない場合、Fileプロパティを含めない場合と同じ例外が作成されます({"値をnullにすることはできません。\ r \ nパラメータ名:fileName"} {System.ArgumentNullException})。