0

RollingFileAppender(log4net)を使用して、24時間年中無休のアプリケーションのイベントをファイルに記録しています。ファイル名は次のとおりである必要があります。

「blabla-2012-3-6.txt」または「blabla-2012-13-6」または「blabla-2012-3-12.txt」

問題は、ゼロの代わりにブランクを使用するDateTime形式がわからないことです。

RollingFileAppender appender = new RollingFileAppender ();
                 appender.Name = String.Format ("{0} appender_", name);
                 appender.File = string.Format ("{0} {1} {2} {3}", logPath, @ "\", file, name, extension);
                 appender.AppendToFile = true;
                 appender.LockingModel = new FileAppender.MinimalLock();
                 appender.StaticLogFileName = false;
              ->> Appender.DatePattern = string.Format ("yyyy-M-d");
....
4

2 に答える 2

0

フォーマット文字列にリテラルを配置できます。

Appender.DatePattern = "yyyy- M- d"; // don't need string.Format

それはうまくいきませんか?

編集:わかりました:MMが必要ですが、「05」の代わりに「5」が必要です。DateTimeフォーマットにはこれを容易にする方法がありません。この特殊なケースのフォーマットを処理しようとする独自の派生RollingFileAppenderを作成できます。

于 2012-05-09T08:30:19.800 に答える
0

Log4netは、以下を使用して、ローリングファイルアペンダーのファイル名を決定します。

m_scheduledFilename = 
CombinePath(File, m_now.ToString(m_datePattern, System.Globalization.DateTimeFormatInfo.InvariantInfo));

ご想像のとおり、m_nowは現在の日時です。したがって、DateTimeで利用可能なすべてのカスタム形式を使用できますが、必要な形式はそのままでは存在しないと思います。したがって、そのような形式がどうしても必要な場合は、メソッドから派生してメソッドRollingFileAppenderをオーバーライドすることにより、カスタムアペンダーを作成できますRollOverTime

于 2012-05-09T08:56:17.307 に答える