Как сгенерировать файл с именем 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"))
...
}