-- ============================================ -- 日志清理定时任务初始化 SQL -- ============================================ -- 1. 插入定时任务记录到 sys_job 表 -- 说明:每天凌晨 0 点自动清理 15 天前的日志数据 -- 注意:LogCleanTask 类位于 fastbee-admin 模块的 com.fastbee.web.task 包下 INSERT INTO `sys_job` ( `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `remark` ) VALUES ( '日志清理任务', -- 任务名称 'SYSTEM', -- 任务组名 'logCleanTask.cleanLogs(30)', -- 调用目标字符串 '0 0 0 * * ?', -- Cron 表达式:每天凌晨 00:00:00 '3', -- 错误策略:不触发立即执行 '1', -- 禁止并发执行 '0', -- 状态:正常 'admin', -- 创建者 NOW(), -- 创建时间 '每天凌晨0点自动清理30天前的日志与报告数据(iot_event_log、sys_oper_log、sys_logininfor、iot_alert_log、sys_job_log、notify_log、iot_platform_push_log、report_record)' ); -- ============================================ -- 清理的日志表说明 -- ============================================ -- 1. iot_event_log - IoT 事件日志 -- 2. sys_oper_log - 系统操作日志 -- 3. sys_logininfor - 登录日志 -- 4. iot_alert_log - 设备告警日志 -- 5. sys_job_log - 定时任务日志 -- 6. notify_log - 通知日志 -- 7. iot_platform_push_log - 平台对接推送日志 -- 8. report_record - 报告生成记录(按 create_time 倒推清理,不再使用 expire_time 字段) -- -- 注意:iot_device_log 表(设备监测日志)不参与清理 -- 该表为核心数据,目前有 214 万条记录,需要数据迁移方案 -- 2. 可选:添加日志清理权限菜单(根据需要执行) -- 如果需要在管理后台显示权限按钮,可以执行以下 SQL /* INSERT INTO `sys_menu` ( `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark` ) VALUES ( '日志清理', -- 菜单名称 2, -- 父菜单ID(根据实际情况调整,2通常是系统管理) 99, -- 显示顺序 '', -- 路由地址 '', -- 组件路径 '', -- 路由参数 1, -- 不是外链 0, -- 不缓存 'F', -- 菜单类型:F=按钮 '0', -- 显示状态 '0', -- 菜单状态 'system:log:clean', -- 权限标识 '#', -- 图标 'admin', -- 创建者 NOW(), -- 创建时间 '日志清理按钮权限' ); */ -- ============================================ -- 验证定时任务是否创建成功 -- ============================================ -- SELECT * FROM sys_job WHERE job_name = '日志清理任务'; -- ============================================ -- 手动触发清理(可选) -- ============================================ -- 如果需要立即清理历史数据,可以通过以下方式: -- 方式1:通过管理后台 -> 系统监控 -> 定时任务 -> 点击"执行一次" -- 方式2:调用 API 接口:POST /system/log/clean?days=30 -- 方式3:数据库执行:UPDATE sys_job SET status = '0' WHERE job_name = '日志清理任务';