[ 
https://issues.apache.org/jira/browse/LOG4NET-672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17504950#comment-17504950
 ] 

Davyd McColl commented on LOG4NET-672:
--------------------------------------

Ok, so it looks like the files _are_ generated with the correct casing, but 
there are a bunch of places where RollingFileAppender does lower-casing before 
matching, so it looks like the original intent was to generate the files with 
the given case, but not allow same-named files with different casing to be seen 
as distinct; in which case, the match you're talking about should just be 
case-insensitive - so that's what I'll do, across all platforms.

> 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)

Reply via email to