Przeglądaj źródła

feat: extend `gcOutdatedLog` for all log files (#2144)

This PR is an enhancement for #2138.

Signed-off-by: xjasonlyu <xjasonlyu@gmail.com>
Jason Lyu 1 rok temu
rodzic
commit
a0ca9f9f93
2 zmienionych plików z 19 dodań i 13 usunięć
  1. 7 13
      internal/conf/conf.go
  2. 12 0
      internal/conf/log_test.go

+ 7 - 13
internal/conf/conf.go

@@ -21,7 +21,6 @@ import (
 	"log"
 	"os"
 	"path"
-	"strings"
 	"time"
 
 	"github.com/lestrrat-go/file-rotatelogs"
@@ -377,18 +376,13 @@ func gcOutdatedLog(filePath string, maxDuration time.Duration) {
 }
 
 func isLogOutdated(name string, now time.Time, maxDuration time.Duration) bool {
-	prefix := fmt.Sprintf("%s.", logFileName)
-	layout := "2006-01-02_15-04-05"
-	if strings.HasPrefix(name, prefix) {
-		logDate := name[len(prefix):]
-		t, err := time.Parse(layout, logDate)
-		if err != nil {
-			Log.Errorf("parse log %v datetime failed, err:%v", name, err)
-			return false
-		}
-		if int64(now.Sub(t))-int64(maxDuration) > 0 {
-			return true
-		}
+	layout := ".2006-01-02_15-04-05"
+	logDateExt := path.Ext(name)
+	if t, err := time.Parse(layout, logDateExt); err != nil {
+		Log.Errorf("parse log %v datetime failed, err:%v", name, err)
+		return false
+	} else if int64(now.Sub(t))-int64(maxDuration) > 0 {
+		return true
 	}
 	return false
 }

+ 12 - 0
internal/conf/log_test.go

@@ -45,6 +45,18 @@ func TestLogOutdated(t *testing.T) {
 			name:   "stream.log.2023-error",
 			remove: false,
 		},
+		{
+			name:   "rule-demo-1.log.2023-06-20_00-00-00",
+			remove: true,
+		},
+		{
+			name:   "rule-demo-2.log.2023-06-29_00-00-00",
+			remove: false,
+		},
+		{
+			name:   "rule-demo-3.log.2023-error",
+			remove: false,
+		},
 	}
 	for _, tc := range testcases {
 		require.Equal(t, tc.remove, isLogOutdated(tc.name, now, maxDuration))