82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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)
 | ||
| 	}
 | ||
| }
 |