juliano.net
juliano.net

Reputation: 8177

Create a folder for each day and a new file when max size is reached

I need to create a logs directory outside the location of my application and a folder for each date. I also need to create a new file when the max size is reached.

I'm using this code:

<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <file type="log4net.Util.PatternString" value="D:/Logs/EmailService/"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <datePattern value=".yyyyMMdd\\\\'service.log"/>
      <staticLogFileName value="true"/>
      <maximumFileSize value="5MB"/>
      <maxSizeRollBackups value="20"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] – %message%newline"/>
      </layout>
      <lockingModel type="log4net.Appender.FileAppender+MutexLock" />
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
  </log4net>

However, the files are not being created. What is wrong with it?

UPDATE

Here's the complete code, that along with @stuartd's answer were able to create the directory per date:

<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <file type="log4net.Util.PatternString" value="D:/Logs/emailservice/%date{yyyyMMdd}/logfile.log"/>
      <appendToFile value="true"/>
      <rollingStyle value="Composite"/>
      <maximumFileSize value="5MB"/>
      <maxSizeRollBackups value="20"/>
      <datePattern value="yyyyMMdd"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] – %message%newline"/>
      </layout>
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="WARN" />
      <appender-ref ref="LogFileAppender" />
    </root>
  </log4net>

Upvotes: 2

Views: 2229

Answers (1)

stuartd
stuartd

Reputation: 73243

in order to roll on date and size you must set <rollingStyle value="Composite"/> in your config - from the docs:

RollingMode.Composite - Roll files based on both the size and date of the file

Upvotes: 2

Related Questions