2
0
Fixes bug #12. If the first write to a file would cause it to rotate, instead
of rotating, we'd just move it aside.  This change fixes that problem
by ensuring that we just run rotate in this situation, which does the
right thing (open new and then cleanup.)  Also added test to verify
the fix.
This commit is contained in:
Nate Finch
2015-05-20 21:52:18 -04:00
parent 75cb3494f9
commit 588a21fb0f
2 changed files with 69 additions and 11 deletions
+13 -11
View File
@@ -252,19 +252,20 @@ func (l *Logger) openExistingOrNew(writeLen int) error {
if err != nil {
return fmt.Errorf("error getting log file info: %s", err)
}
// the first file we find that matches our pattern will be the most
// recently modified log file.
if info.Size()+int64(writeLen) < l.max() {
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0644)
if err == nil {
l.file = file
l.size = info.Size()
return nil
}
if info.Size()+int64(writeLen) >= l.max() {
return l.rotate()
}
file, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
// if we fail to open the old log file for some reason, just ignore
// it and open a new log file.
return l.openNew()
}
return l.openNew()
l.file = file
l.size = info.Size()
return nil
}
// genFilename generates the name of the logfile from the current time.
@@ -338,7 +339,6 @@ func (l *Logger) oldLogFiles() ([]logInfo, error) {
if f.IsDir() {
continue
}
name := l.timeFromName(f.Name(), prefix, ext)
if name == "" {
continue
@@ -347,6 +347,8 @@ func (l *Logger) oldLogFiles() ([]logInfo, error) {
if err == nil {
logFiles = append(logFiles, logInfo{t, f})
}
// error parsing means that the suffix at the end was not generated
// by lumberjack, and therefore it's not a backup file.
}
sort.Sort(byFormatTime(logFiles))