Skip to content

日志管理

Gocron 提供了完善的日志管理功能,包括数据库日志和文件日志的自动清理,帮助您有效管理系统存储空间。

功能概述

  • 数据库日志清理:自动清理指定天数前的任务执行日志
  • 日志文件清理:当日志文件超过指定大小时自动清空
  • 定时清理:支持自定义清理时间,每天自动执行
  • 实时配置:配置修改后立即生效,无需重启服务

访问日志管理

  1. 登录 Gocron 管理界面
  2. 导航到 系统管理日志保留
  3. 在此页面可以配置所有日志清理相关设置

配置选项

数据库日志保留天数

功能说明:设置任务执行日志在数据库中的保留时间

  • 配置范围: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时自动清空

清理机制

数据库日志清理

  1. 触发条件:数据库日志保留天数 > 0
  2. 清理范围:删除指定天数前的所有任务执行日志记录
  3. 清理时间:每天在设定的清理时间执行
  4. 日志记录:清理操作会记录在系统日志中

SQL示例

sql
-- 删除30天前的任务日志
DELETE FROM task_log WHERE start_time < DATE_SUB(NOW(), INTERVAL 30 DAY);

日志文件清理

  1. 触发条件:日志文件大小限制 > 0
  2. 检查文件log/cron.log
  3. 清理方式:当文件大小超过限制时,清空文件内容(不删除文件)
  4. 清理时间:每天在设定的清理时间检查

清理逻辑

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:MM
  • file_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+:新增日志文件大小限制功能
  • 最新版本:支持实时配置更新,无需重启服务

相关文档