为什么文件上的日期没有滚动?

时间:2017-06-21 21:25:09

标签: log4net

我必须做一些愚蠢的事情,但我无法想到它(我相信我的问题的核心是PatternString不是动态的,它在程序启动时会被设置一次)。这是我的lognet.config文件:

 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString"  value="F:\Logs\MonitorService_%date{yyyyMMdd}.log" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <datePattern value="yyyyMMdd" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="3000MB" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="DEBUG" />
        <levelMax value="FATAL" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c :: %m%n" />
      </layout>
    </appender>

似乎文件以一种搞砸的方式出现:

F:\Logs\MonitorService_20170212.log
F:\Logs\MonitorService_20170212.log20170613
F:\Logs\MonitorService_20170212.log20170614

我希望他们每天滚动时出现如下:

F:\Logs\MonitorService_20170612.log
F:\Logs\MonitorService_20170613.log
F:\Logs\MonitorService_20170614.log

我做错了什么?

1 个答案:

答案 0 :(得分:1)

无需将日期放在file元素的value中。 datePattern元素确定在创建新日志文件时应用于日志文件的后缀。

<file type="log4net.Util.PatternString" value="F:\Logs\MonitorService" />
<datePattern value="_yyyyMMdd" />

此处,当前日志文件将被称为“MonitorService”,当它被打开时,该文件将被重命名为“MonitorService_20170622”,并且将创建一个名为“MonitorService”的新文件来存储新的日志消息。