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
