| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package iotLog
- import (
- "fmt"
- "os"
- "path/filepath"
- "time"
- )
- // Clean 清理日志文件
- func Clean(dataDays, deviceDays int) (err error) {
- err = cleanDataLog(dataDays)
- if err != nil {
- return err
- }
- err = cleanDeviceLog(deviceDays)
- if err != nil {
- return err
- }
- return
- }
- func cleanDataLog(days int) error {
- path := getDataLogPath()
- //删除30天前的日志文件
- return deleteLogsOlderThan(path, "data", days)
- }
- func cleanDeviceLog(days int) error {
- path := getDeviceLogPath()
- //删除30天前的日志文件
- return deleteLogsOlderThan(path, "log", days)
- }
- // deleteLogsOlderThan 删除比指定日期早的日志文件。
- // days 参数表示需要删除的日志文件是几天前的。
- func deleteLogsOlderThan(path, suffix string, days int) error {
- threshold := time.Now().AddDate(0, 0, -days)
- files, err := filepath.Glob(filepath.Join(path, "*."+suffix)) // 假设日志文件以.log结尾
- if err != nil {
- return fmt.Errorf("failed to list files in %s: %w", path, err)
- }
- for _, file := range files {
- fileInfo, err := os.Stat(file)
- if err != nil {
- if os.IsNotExist(err) {
- fmt.Printf("File %s does not exist\n", file)
- } else {
- return fmt.Errorf("failed to get info for %s: %w", file, err)
- }
- }
- // 检查文件修改时间是否早于阈值
- if fileInfo.ModTime().Before(threshold) {
- err = os.Remove(file)
- if err != nil {
- return fmt.Errorf("failed to delete %s: %w", file, err)
- }
- fmt.Printf("Deleted log file: %s\n", file)
- }
- }
- return nil
- }
|