温馨提示×

Golang日志文件如何定期清理

小樊
61
2025-05-02 14:14:07
栏目: 编程语言

在Golang中,你可以使用time包和os包来实现日志文件的定期清理。以下是一个简单的示例,展示了如何定期清理超过指定天数的日志文件:

package main import ( "fmt" "io/ioutil" "log" "os" "path/filepath" "time" ) const (	logDir = "logs" // 日志文件所在的目录	maxDays = 7 // 保留日志文件的最大天数	cleanupInterval = 24 * time.Hour // 清理间隔时间 ) func main() { // 创建日志目录(如果不存在) if _, err := os.Stat(logDir); os.IsNotExist(err) {	os.Mkdir(logDir, os.ModePerm)	} // 启动定期清理任务	ticker := time.NewTicker(cleanupInterval) go func() { for range ticker.C {	cleanUpOldLogs()	}	}() // 示例:每隔1秒创建一个新的日志文件 for i := 0; i < 10; i++ {	logFile := filepath.Join(logDir, fmt.Sprintf("log_%d.txt", time.Now().Unix()))	file, err := os.Create(logFile) if err != nil {	log.Fatalf("Failed to create log file: %v", err)	}	file.WriteString(fmt.Sprintf("This is a log entry %d\n", i))	file.Close()	time.Sleep(1 * time.Second)	} } 

在这个示例中,我们首先创建了一个名为logs的目录来存储日志文件。然后,我们使用time.NewTicker创建了一个定时器,每隔24小时触发一次清理任务。cleanUpOldLogs函数会遍历日志目录中的所有文件,检查它们的最后修改时间,如果超过了最大保留天数(例如7天),则删除这些文件。

请注意,这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。例如,你可能需要考虑日志文件的滚动策略、日志级别等因素。

0