Only look at relevant log files for backup size at initialization time.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4net/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4net/commit/675e7cba
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4net/tree/675e7cba
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4net/diff/675e7cba

Branch: refs/heads/pr/old/22
Commit: 675e7cba232433f99e3ab0800e59c6740d6ecb37
Parents: 655233d
Author: Sotirios Delimanolis <[email protected]>
Authored: Fri Jan 29 10:06:25 2016 -0800
Committer: Dominik Psenner <[email protected]>
Committed: Thu May 25 23:16:48 2017 +0200

----------------------------------------------------------------------
 src/Appender/RollingFileAppender.cs | 149 +++++++++++++------------------
 1 file changed, 62 insertions(+), 87 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4net/blob/675e7cba/src/Appender/RollingFileAppender.cs
----------------------------------------------------------------------
diff --git a/src/Appender/RollingFileAppender.cs 
b/src/Appender/RollingFileAppender.cs
index c1b7705..3068ce7 100644
--- a/src/Appender/RollingFileAppender.cs
+++ b/src/Appender/RollingFileAppender.cs
@@ -867,100 +867,75 @@ namespace log4net.Appender
                        }
                }
 
-               /// <summary>
-               /// Does the work of bumping the 'current' file counter higher
-               /// to the highest count when an incremental file name is seen.
-               /// The highest count is either the first file (when count 
direction
-               /// is greater than 0) or the last file (when count direction 
less than 0).
-               /// In either case, we want to know the highest count that is 
present.
-               /// </summary>
-               /// <param name="baseFile"></param>
-               /// <param name="curFileName"></param>
-               private void InitializeFromOneFile(string baseFile, string 
curFileName)
-               {
-            if 
(curFileName.StartsWith(Path.GetFileNameWithoutExtension(baseFile)) == false)
-                       {
-                               // This is not a log file, so ignore
-                               return;
-                       }
-                       if (curFileName.Equals(baseFile)) 
-                       {
-                               // Base log file is not an incremented logfile 
(.1 or .2, etc)
-                               return;
-                       }
-       
-            /*
-                       if (m_staticLogFileName) 
-                       {
-                               int endLength = curFileName.Length - index;
-                               if (baseFile.Length + endLength != 
curFileName.Length) 
-                               {
-                                       // file is probably scheduledFilename + 
.x so I don't care
-                                       return;
-                               }
-                       }
-            */
-       
-                       // Only look for files in the current roll point
-                       if (m_rollDate && !m_staticLogFileName)
-                       {
-                               string date = 
m_dateTime.Now.ToString(m_datePattern, 
System.Globalization.DateTimeFormatInfo.InvariantInfo);
-                               string prefix = m_preserveLogFileNameExtension 
? Path.GetFileNameWithoutExtension(baseFile) + date : baseFile + date;
-                               string suffix = m_preserveLogFileNameExtension 
? Path.GetExtension(baseFile) : "";
-                               if (!curFileName.StartsWith(prefix) || 
!curFileName.EndsWith(suffix))
-                               {
-                                       LogLog.Debug(declaringType, "Ignoring 
file ["+curFileName+"] because it is from a different date period");
-                                       return;
-                               }
-                       }
-            
-                       try 
-                       {
-                               // Bump the counter up to the highest count 
seen so far
-                int backup = GetBackUpIndex(curFileName);
-                
-                // caution: we might get a false positive when certain
-                // date patterns such as yyyyMMdd are used...those are
-                // valid number but aren't the kind of back up index
-                // we're looking for
-                if (backup > m_curSizeRollBackups)
-                {
-                    if (0 == m_maxSizeRollBackups)
-                    {
-                        // Stay at zero when zero backups are desired
-                    }
-                    else if (-1 == m_maxSizeRollBackups)
-                    {
-                        // Infinite backups, so go as high as the highest value
-                        m_curSizeRollBackups = backup;
+        /// <summary>
+        /// Does the work of bumping the 'current' file counter higher
+        /// to the highest count when an incremental file name is seen.
+        /// The highest count is either the first file (when count direction
+        /// is greater than 0) or the last file (when count direction less 
than 0).
+        /// In either case, we want to know the highest count that is present.
+        /// </summary>
+        /// <param name="origBaseFile"></param>
+        /// <param name="origCurFileName"></param>
+        private void InitializeFromOneFile(string origBaseFile, string 
origCurFileName)
+        {
+            // keep originals for logging
+            string baseFile = origBaseFile;
+            string curFileName = origCurFileName;
+
+            if (m_preserveLogFileNameExtension) {
+                curFileName = Path.GetFileNameWithoutExtension (curFileName);
+                baseFile = Path.GetFileNameWithoutExtension (baseFile);
+            }
+
+            if (!m_staticLogFileName) {
+                // Generate expected target file name
+                string date = m_dateTime.Now.ToString(m_datePattern, 
System.Globalization.DateTimeFormatInfo.InvariantInfo);
+                baseFile = baseFile + date;
+
+                // Only look for files in the current roll point
+                if (m_rollDate) {
+                    if (!origCurFileName.StartsWith (baseFile) || 
(m_preserveLogFileNameExtension && !origCurFileName.EndsWith (Path.GetExtension 
(origBaseFile)))) {
+                        LogLog.Debug (declaringType, "Ignoring file [" + 
origCurFileName + "] because it is from a different date period");
+                        return;
                     }
-                    else
-                    {
-                        // Backups limited to a finite number
-                        if (m_countDirection >= 0)
-                        {
-                            // Go with the highest file when counting up
+                }
+            }
+
+            // remove baseFile prefix
+            string datePatternOrBackup = curFileName.Substring 
(baseFile.Length);
+
+            if (datePatternOrBackup.Length == 0) {
+                LogLog.Debug (declaringType, "Encountered the base file [" + 
origCurFileName + "]");
+            } else if (datePatternOrBackup [0] != '.') {
+                LogLog.Debug (declaringType, "Encountered a file that 
definitely isn't a size backup for the current log file [" + origCurFileName + 
"]");
+            } else {
+                int backup;
+                if (!int.TryParse (datePatternOrBackup.Substring (1), out 
backup)) {
+                    LogLog.Debug (declaringType, "Encountered a backup file 
not ending in .N [" + origCurFileName + "]");
+                } else {
+                    if (backup > m_curSizeRollBackups) {
+                        if (0 == m_maxSizeRollBackups) {
+                            // Stay at zero when zero backups are desired
+                        } else if (-1 == m_maxSizeRollBackups) {
+                            // Infinite backups, so go as high as the highest 
value
                             m_curSizeRollBackups = backup;
-                        }
-                        else
-                        {
-                            // Clip to the limit when counting down
-                            if (backup <= m_maxSizeRollBackups)
-                            {
+                        } else {
+                            // Backups limited to a finite number
+                            if (m_countDirection >= 0) {
+                                // Go with the highest file when counting up
                                 m_curSizeRollBackups = backup;
+                            } else {
+                                // Clip to the limit when counting down
+                                if (backup <= m_maxSizeRollBackups) {
+                                    m_curSizeRollBackups = backup;
+                                }
                             }
                         }
+                        LogLog.Debug (declaringType, "File name [" + 
origCurFileName + "] moves current count to [" + m_curSizeRollBackups + "]");
                     }
-                    LogLog.Debug(declaringType, "File name [" + curFileName + 
"] moves current count to [" + m_curSizeRollBackups + "]");
                 }
-                       } 
-                       catch(FormatException) 
-                       {
-                               //this happens when file.log -> 
file.log.yyyy-MM-dd which is normal
-                               //when staticLogFileName == false
-                               LogLog.Debug(declaringType, "Encountered a 
backup file not ending in .x ["+curFileName+"]");
-                       }
-               }
+            }
+        }
 
         /// <summary>
         /// Attempts to extract a number from the end of the file name that 
indicates

Reply via email to