Denis
Denis

Reputation: 12077

Why is the date on the file not rolling?

I must be doing something stupid but I can't think of it (I believe the core of my problem is that the PatternString is not dynamic and it gets set once when the program starts). Here is my lognet.config file:

 <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>

It seems like the files are coming out in a screwed up manner as:

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

I would like them to come out as follows when they roll from day to day:

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

What am I doing wrong?

Upvotes: 0

Views: 135

Answers (1)

Andy Lamb
Andy Lamb

Reputation: 2242

There's no need to put the date in the file element's value. The datePattern element determines the suffix applied to a log file when a new log file is created.

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

Here, the current log file will be called 'MonitorService' and when it is rolled on, the file will be renamed 'MonitorService_20170622' and a new file called 'MonitorService' will be created to store new log messages.

Upvotes: 1

Related Questions