From eca0d41141cd5004438156bb597e5954afbe165a Mon Sep 17 00:00:00 2001 From: Muhammad Zakaria Date: Wed, 21 Aug 2024 19:07:00 +0300 Subject: [PATCH 1/3] Fix log backup file extension --- logger/log.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/logger/log.go b/logger/log.go index c0bb7563d4a..dcd412d3d3a 100644 --- a/logger/log.go +++ b/logger/log.go @@ -254,10 +254,12 @@ func (l *fileLogger) Write(b []byte) (int, error) { return n, err } fname := l.f.Name() + ext := filepath.Ext(fname) + base := strings.TrimSuffix(fname, ext) now := time.Now() - bak := fmt.Sprintf("%s.%04d.%02d.%02d.%02d.%02d.%02d.%09d", fname, + bak := fmt.Sprintf("%s.%04d.%02d.%02d.%02d.%02d.%02d.%09d%s", base, now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), - now.Second(), now.Nanosecond()) + now.Second(), now.Nanosecond(), ext) os.Rename(fname, bak) fileflags := os.O_WRONLY | os.O_APPEND | os.O_CREATE f, err := os.OpenFile(fname, fileflags, 0660) From e6e5153b368302062d71a0b356cb1ddceddac3b0 Mon Sep 17 00:00:00 2001 From: Muhammad Zakaria Date: Wed, 21 Aug 2024 22:02:22 +0300 Subject: [PATCH 2/3] added changes in logPurge to purge rotated logs with extension --- logger/log.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/logger/log.go b/logger/log.go index dcd412d3d3a..52b4d5e3cf0 100644 --- a/logger/log.go +++ b/logger/log.go @@ -203,16 +203,17 @@ func (l *fileLogger) logPurge(fname string) { var backups []string lDir := filepath.Dir(fname) lBase := filepath.Base(fname) + baseWithoutExt := strings.TrimSuffix(lBase, filepath.Ext(lBase)) entries, err := os.ReadDir(lDir) if err != nil { l.logDirect(l.l.errorLabel, "Unable to read directory %q for log purge (%v), will attempt next rotation", lDir, err) return } for _, entry := range entries { - if entry.IsDir() || entry.Name() == lBase || !strings.HasPrefix(entry.Name(), lBase) { + if entry.IsDir() || entry.Name() == lBase || !strings.HasPrefix(entry.Name(), baseWithoutExt+".") { continue } - if stamp, found := strings.CutPrefix(entry.Name(), fmt.Sprintf("%s%s", lBase, ".")); found { + if stamp, found := strings.CutPrefix(entry.Name(), fmt.Sprintf("%s.", baseWithoutExt)); found { _, err := time.Parse("2006:01:02:15:04:05.999999999", strings.Replace(stamp, ".", ":", 5)) if err == nil { backups = append(backups, entry.Name()) From c66470fa2ad1d6ccee5b7e64d68650c8e6e6bd3b Mon Sep 17 00:00:00 2001 From: Muhammad Zakaria Date: Thu, 22 Aug 2024 10:03:26 +0300 Subject: [PATCH 3/3] check to distinguish between current log file and rotated log files --- logger/log.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/logger/log.go b/logger/log.go index 52b4d5e3cf0..167df336515 100644 --- a/logger/log.go +++ b/logger/log.go @@ -213,10 +213,13 @@ func (l *fileLogger) logPurge(fname string) { if entry.IsDir() || entry.Name() == lBase || !strings.HasPrefix(entry.Name(), baseWithoutExt+".") { continue } - if stamp, found := strings.CutPrefix(entry.Name(), fmt.Sprintf("%s.", baseWithoutExt)); found { - _, err := time.Parse("2006:01:02:15:04:05.999999999", strings.Replace(stamp, ".", ":", 5)) - if err == nil { - backups = append(backups, entry.Name()) + if strings.HasSuffix(entry.Name(), ".log") { + if stamp, found := strings.CutPrefix(entry.Name(), fmt.Sprintf("%s.", baseWithoutExt)); found { + stamp = strings.TrimSuffix(stamp, ".log") + _, err := time.Parse("2006:01:02:15:04:05.999999999", strings.Replace(stamp, ".", ":", 5)) + if err == nil { + backups = append(backups, entry.Name()) + } } } }