0

我正在使用 RollingFileAppender(log4net) 在文件中记录 24/7 应用程序的事件。文件名必须如下:

“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,但你想要“5”而不是“05”。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 回答