package jobs import ( "fmt" "os" "path/filepath" "time" "github.com/go-admin-team/go-admin-core/logger" "github.com/go-admin-team/go-admin-core/sdk" "github.com/go-admin-team/go-admin-core/sdk/config" "gorm.io/gorm" ) type ClearLogJob struct { } // 删除过期日志 func (t ClearLogJob) Exec(arg interface{}) error { str := time.Now().Format(timeFormat) + " [INFO] JobCore ClearLogJob exec success" defer logger.Info(str) var db *gorm.DB for _, item := range sdk.Runtime.GetDb() { db = item break } ClearLogs(db) return nil } func ClearLogs(orm *gorm.DB) { dir := config.LoggerConfig.Path if dir == "" { dir = "temp/logs" } // 检查文件夹是否存在 if _, err := os.Stat(dir); os.IsNotExist(err) { fmt.Printf("Directory %s does not exist, skipping cleanup.\n", dir) return } // 获取当前时间 now := time.Now() expirateDay := 2 // 遍历指定文件夹中的所有文件 err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { if err != nil { return err } // 只处理普通文件 if !info.IsDir() { // 获取文件的修改时间 modTime := info.ModTime() // 计算文件修改时间与当前时间的差值 duration := now.Sub(modTime) // 如果文件超过7天,则删除 if duration > time.Duration(expirateDay)*24*time.Hour { fmt.Printf("Deleting file: %s (Last modified: %s)\n", path, modTime) err := os.Remove(path) if err != nil { return err } } } return nil }) if err != nil { fmt.Printf("Error walking the path %v: %v\n", dir, err) } }