[
https://issues.apache.org/jira/browse/LOG4NET-672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17480857#comment-17480857
]
Davyd McColl commented on LOG4NET-672:
--------------------------------------
I've started to look into this - I first wanted to have an included application
to repro the issue, and now I've stumbled across something I'm trying to fix
along the way: at some point (either dotnet 5 or dotnet 6 - I haven't tested 5
yet, but 6 has the issue and framework 462 doesn't), the xml appender has been
broken by Microsoft deciding that XmlWriter's WriteStartElement should simply
throw an error when the element is namespaced (eg `log4net:event`) and I
haven't figured out the correct magic yet to work around this behavior. I am,
however, looking into both as a unit.
> 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
> Priority: Critical
>
> {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.20.1#820001)