日志管理
Gocron 提供了完善的日志管理功能,包括数据库日志和文件日志的自动清理,帮助您有效管理系统存储空间。
功能概述
- 数据库日志清理:自动清理指定天数前的任务执行日志
- 日志文件清理:当日志文件超过指定大小时自动清空
- 定时清理:支持自定义清理时间,每天自动执行
- 实时配置:配置修改后立即生效,无需重启服务
访问日志管理
- 登录 Gocron 管理界面
- 导航到 系统管理 → 日志保留
- 在此页面可以配置所有日志清理相关设置
配置选项
数据库日志保留天数
功能说明:设置任务执行日志在数据库中的保留时间
- 配置范围:0 - 3650 天
- 默认值:0(不自动清理)
- 说明:
- 设置为
0表示不自动清理数据库日志 - 设置为
30表示保留最近30天的日志,30天前的日志将被自动删除 - 建议根据存储空间和业务需求设置合适的保留天数
- 设置为
清理时间
功能说明:设置每天执行日志清理的时间
- 格式:HH:MM(24小时制)
- 默认值:03:00
- 说明:
- 系统会在每天的指定时间自动执行日志清理任务
- 建议设置在业务低峰期,如凌晨3点
- 修改后立即生效,无需重启服务
日志文件大小限制
功能说明:设置日志文件的最大大小限制
- 配置范围:0 - 10240 MB
- 默认值:0(不清理日志文件)
- 说明:
- 设置为
0表示不清理日志文件 - 设置为
100表示当日志文件超过100MB时自动清空 - 清空操作会保留文件但清除内容,不会删除文件
- 设置为
配置示例
基础配置
数据库日志保留天数:30
清理时间:03:00
日志文件大小限制:100此配置表示:
- 保留最近30天的任务执行日志
- 每天凌晨3点自动清理
- 当日志文件超过100MB时自动清空
仅清理数据库日志
数据库日志保留天数:7
清理时间:02:00
日志文件大小限制:0此配置表示:
- 仅保留最近7天的任务执行日志
- 每天凌晨2点自动清理
- 不清理日志文件
仅清理日志文件
数据库日志保留天数:0
清理时间:04:00
日志文件大小限制:50此配置表示:
- 不清理数据库日志
- 每天凌晨4点检查日志文件
- 当日志文件超过50MB时自动清空
清理机制
数据库日志清理
- 触发条件:数据库日志保留天数 > 0
- 清理范围:删除指定天数前的所有任务执行日志记录
- 清理时间:每天在设定的清理时间执行
- 日志记录:清理操作会记录在系统日志中
SQL示例:
sql
-- 删除30天前的任务日志
DELETE FROM task_log WHERE start_time < DATE_SUB(NOW(), INTERVAL 30 DAY);日志文件清理
- 触发条件:日志文件大小限制 > 0
- 检查文件:
log/cron.log - 清理方式:当文件大小超过限制时,清空文件内容(不删除文件)
- 清理时间:每天在设定的清理时间检查
清理逻辑:
go
// 检查文件大小
fileInfo, err := os.Stat("log/cron.log")
maxSize := int64(fileSizeLimit) * 1024 * 1024 // 转换为字节
// 如果超过限制,清空文件
if fileInfo.Size() > maxSize {
os.Truncate("log/cron.log", 0)
}API 接口
获取日志保留配置
http
GET /system/log-retention响应示例:
json
{
"code": 0,
"message": "",
"data": {
"days": 30,
"cleanup_time": "03:00",
"file_size_limit": 100
}
}更新日志保留配置
http
POST /system/log-retention
Content-Type: application/json
{
"days": 30,
"cleanup_time": "03:00",
"file_size_limit": 100
}参数说明:
days:数据库日志保留天数(0-3650)cleanup_time:清理时间,格式 HH:MMfile_size_limit:日志文件大小限制,单位MB(0-10240)
最佳实践
存储空间管理
- 根据服务器存储空间合理设置保留天数
- 定期监控数据库大小和日志文件大小
- 对于高频任务,建议设置较短的保留期
清理时间设置
- 选择业务低峰期执行清理,避免影响正常业务
- 避免与任务执行高峰期冲突
- 建议设置在凌晨2-5点之间
监控建议
- 定期检查清理日志,确保清理任务正常执行
- 监控数据库大小变化,评估清理效果
- 根据业务需求调整保留策略
备份策略
- 在设置较短保留期前,考虑是否需要备份历史日志
- 对于重要的任务日志,可以考虑导出备份
- 建议在生产环境中先进行小范围测试
故障排除
常见问题
Q: 设置了清理时间但没有执行清理
- 检查数据库日志保留天数是否大于0
- 查看系统日志确认清理任务是否正常加载
- 确认系统时间是否正确
Q: 日志文件没有被清理
- 检查日志文件大小限制是否大于0
- 确认日志文件路径是否正确(log/cron.log)
- 检查文件权限是否允许写入
Q: 清理后数据库大小没有明显减少
- MySQL需要执行
OPTIMIZE TABLE task_log来回收空间 - 考虑数据库的存储引擎特性
- 检查是否有其他大量数据占用空间
日志查看
清理操作的详细信息会记录在系统日志中:
2024-01-15 03:00:01 [INFO] 自动清理30天前的数据库日志, 删除1250条记录
2024-01-15 03:00:02 [INFO] 日志文件超过100MB,已清空: log/cron.log版本历史
- v1.1+:支持数据库日志自动清理
- v1.2+:新增日志文件大小限制功能
- 最新版本:支持实时配置更新,无需重启服务