Как сгенерировать файл с именем yyyyMMdd.2.log с log4net

Вот приложение, которое я использовал в app.config, он будет генерировать файлы как 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 ответа

Эта функциональность является частью версии 1.2.11. Существует новый параметр для приложения "Подвижный файл":

<preserveLogFileNameExtension value="true"/> 

Вот ссылка на проблему JIRA: https://issues.apache.org/jira/browse/LOG4NET-64

Для того, чтобы сделать это в первую очередь, вам нужно установить свой конфигурационный файл:

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


Другие вопросы по тегам