如何使用log4net生成名为yyyyMMdd.2.log的文件

时间:2012-04-30 18:37:20

标签: log4net log4net-configuration

以下是我在app.config中使用的appender,它会生成20120501.log.1之类的文件,而我期望的是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>

2 个答案:

答案 0 :(得分:7)

此功能是1.2.11版的一部分。滚动文件追加器有一个新设置:

<preserveLogFileNameExtension value="true"/> 

以下是JIRA问题的链接: https://issues.apache.org/jira/browse/LOG4NET-64

答案 1 :(得分:-1)

首先,您需要设置配置文件:

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

然后在您的Global.asax文件中设置LogName详细信息:


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"))
    ...
}