2012-05-09 41 views
0

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

“布拉布拉-2012- 3- 6.txt” 或 “布拉布拉-2012-13- 6” 或 “布拉布拉-2012- 3-12.txt”

问题是我不知道日期时间格式,这将使用空白而不是零。

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"); 
.... 
+0

你不能用/ 10来确定天气的月份/日期是单个字符并追加“”,那么月份/日期? – t3hn00b

+0

今天即时通讯使用NLog自定义事件上下文。 https://github.com/NLog/NLog/wiki/EventContext-Layout-Renderer – SteMa

回答

0

log4net的使用下面的滚动文件附加目的地,以确定文件名:

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

这里,你猜m_now是当前日期时间。所以你可以使用所有的DateTime available custom formats,我认为你需要的格式不是现成的。 因此,如果你绝对需要这样一种格式,你可以通过从RollingFileAppender派生它并覆盖RollOverTime方法来编写一个自定义的appender。

0

您可以将格式字符串文字:

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

这是否不行?

编辑:我现在明白了:你想要MM,而不是“05”你想要“5”。日期时间格式化没有办法来促进这一点。你可以创建你自己的派生RollingFileAppender来尝试处理这种特殊格式。

+0

而当它是10月13日,它会是2012 - 10 - 13,据我可以工作 – t3hn00b