Akhil Bandari created LOG4NET-672: ------------------------------------- Summary: Previous rolled files not taken into consideration after restart the Logging Manager with a specific date-pattern Key: LOG4NET-672 URL: https://issues.apache.org/jira/browse/LOG4NET-672 Project: Log4net Issue Type: Bug Components: Appenders Affects Versions: 2.0.10 Reporter: Akhil Bandari
{code:xml} <log4net> <appender name="LogFileAppenderXML" type="log4net.Appender.RollingFileAppender"> <file value="Logs\.xml" /> <datePattern value="yyyy-MM-dd-'Xyz'" /> <appendToFile value="true" /> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <rollingStyle value="Composite" /> <maxSizeRollBackups value="40" /> <maximumFileSize value="1MB" /> <preserveLogFileNameExtension value="true" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.XmlLayout"/> </appender> <root> <level value="ALL"/> <appender-ref ref="LogFileAppenderXML"></appender-ref> </root> </log4net> {code} With the above configuration, the rolling was working fine for a single run of the application, but after a restart of the logging manager (or the application), the previous rolled files are overwritten instead of new rolled files being created with the last highest rolled file index. +*Steps to reproduce:*+ # Create an application [console or wpf] with the above log4net config # Start logging ## Until At least 10 rolled files are created # Close and ReStart the application # Start logging again ## Observe the rolled files ## Start logging and when the logging information reaches to maximumFileSize, {color:#172b4d}the previous rolled file content will be overwritten with new content, _*instead of increasing the rolled file count.*_{color} {color:#172b4d}Looked into the source code of *RollingFileAppender* found that {color} * {color:#172b4d}At the initial phase all the rolled file names, are converted into the *LowerInvariant and* passing to the *InitializeFromOneFile* method{color} {code:c#} private void InitializeRollBackups(string baseFile, ArrayList arrayFiles) { if (null != arrayFiles) { string baseFileLower = baseFile.ToLowerInvariant(); foreach(string curFileName in arrayFiles) { InitializeFromOneFile(baseFileLower,curFileName.ToLowerInvariant()); } } } {code} - Inside *InitializeFromOneFile* - The date variable is not converting to lower or while comparing the *curFileName with a prefix not using ignoreCase* - that is leading not to get last rolled file index {code:c#} if (!curFileName.StartsWith(prefix) || !curFileName.EndsWith(suffix)) { LogLog.Debug(declaringType, "Ignoring file ["+curFileName+"] because it is from a different date period"); return; } {code} Is there any possibility to use ignoreCase while comparing curFileName with the prefix {code:c#} if (!curFileName.StartsWith(prefix,true,CultureInfo.InvariantCulture) || !curFileName.EndsWith(suffix)) {code} Or is there any reason not to _*use ignoreCase while comparing curFileName*_ with the _*prefix?*_ -- This message was sent by Atlassian Jira (v8.3.4#803005)