Files

71 lines
1.2 KiB
Go
Raw Permalink Normal View History

2024-01-23 13:37:51 +08:00
package loggerx
import (
"fmt"
"os"
"path/filepath"
"time"
)
2024-05-28 09:30:57 +08:00
// 监听dir文件夹的所有文件,循环查找是否有超过days天的文件,删除掉
2024-01-23 13:37:51 +08:00
func (l *Logger) delete() {
2024-06-26 17:41:17 +08:00
tick := time.NewTicker(time.Hour)
for {
select {
case <-tick.C:
err := l.walkAndDel()
if err != nil {
fmt.Println(err)
}
case <-l.ctx.Done():
return
}
}
}
func (l *Logger) walkAndDel() error {
2024-01-23 13:37:51 +08:00
err := filepath.Walk(l.option.dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
fmt.Println(err)
return err
}
2024-06-26 19:00:16 +08:00
// 没设置删除天数
2024-01-23 13:37:51 +08:00
if l.option.days <= 0 {
2024-06-26 19:00:16 +08:00
return nil
2024-01-23 13:37:51 +08:00
}
// 判断最后修改时间是否大于3天
if info.ModTime().After(time.Now().AddDate(0, 0, -l.option.days)) {
return nil
}
if info.IsDir() {
if !isEmptyDir(path) {
return nil
}
}
ext := filepath.Ext(path)
2024-01-23 13:38:53 +08:00
if ext != ".log" {
2024-01-23 13:37:51 +08:00
return nil
}
// 删除文件
fmt.Println("删除文件", path)
return os.Remove(path)
})
2024-06-26 17:41:17 +08:00
return err
2024-01-23 13:37:51 +08:00
}
2024-06-26 17:41:17 +08:00
// 判断空文件夹
2024-01-23 13:37:51 +08:00
func isEmptyDir(path string) bool {
files, err := os.ReadDir(path)
if err != nil {
fmt.Println(err)
return false
}
return len(files) == 0 // 文件夹为空
}