laodenuo9527
laodenuo9527

Reputation: 61

How to generate file with name yyyyMMdd.2.log with log4net

Here is the appender I used in app.config, it will generate files like 20120501.log.1, while what I expected is 20120501.1.log.

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <file value="logs\" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="yyyyMMddt'.log.'" />
  <countDirection value="1" />
  <maxSizeRollBackups value="100" />
  <maximumFileSize value="1000kb" />
  <staticLogFileName value="false" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
  </layout>
</appender>

Upvotes: 4

Views: 1160

Answers (2)

Stefan Egli
Stefan Egli

Reputation: 17018

This functionality is part of version 1.2.11. There is a new setting for the rolling file appender:

<preserveLogFileNameExtension value="true"/> 

Here is the link to the JIRA issue: https://issues.apache.org/jira/browse/LOG4NET-64

Upvotes: 7

OrahSoft
OrahSoft

Reputation: 803

In order to do this first you need to set your config file:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net"> 
     <File type="log4net.Util.PatternString" value="App_Data/%property{LogName}" /> 
     ...
</appender> 

Then in your Global.asax file you set your LogName details:


private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Global.asax"); 
void Application_Start(object sender, EventArgs e)  
{ 
    // Set logfile name and application name variables 
    log4net.GlobalContext.Properties["LogName"] = String.Format("{0}.2.log",DateTime.Now.ToString("yyyyMMdd"))
    ...
} 


Upvotes: -1

Related Questions