Files
windows_lock_go/app/jobs/clear_job.go

82 lines
1.6 KiB
Go
Raw Normal View History

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)
}
}