JobLogReportHelper
JobLogReportHelper的作用
- 连续查询最近3天每一天的任务执行日志(xxl-job-log),包括
总任务数量,执行中的任务数量,执行成功的任务数量;记录到xxl-job-log-report中,供报表使用。该逻辑每分钟执行一次 - 清理xxl-job-log中过期的记录;调度中心
logretentiondays必须大于等于7,否则不开启log清理功能;该逻辑每天执行一次。
1. 查询任务执行情况
1.1. 确定最近三天的开始日期、结束日期
要查询最近三天的执行日志,每一天的开始结束日期。
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
// today
Calendar itemDay = Calendar.getInstance();
itemDay.add(Calendar.DAY_OF_MONTH, -i);
itemDay.set(Calendar.HOUR_OF_DAY, 0);
itemDay.set(Calendar.MINUTE, 0);
itemDay.set(Calendar.SECOND, 0);
itemDay.set(Calendar.MILLISECOND, 0);
Date todayFrom = itemDay.getTime();
itemDay.set(Calendar.HOUR_OF_DAY, 23);
itemDay.set(Calendar.MINUTE, 59);
itemDay.set(Calendar.SECOND, 59);
itemDay.set(Calendar.MILLISECOND, 999);
Date todayTo = itemDay.getTime();
System.out.println("开始时间:" + todayFrom);
System.out.println("结束时间:" + todayTo);
}
}
开始时间:Sat Aug 23 00:00:00 CST 2025
结束时间:Sat Aug 23 23:59:59 CST 2025
开始时间:Fri Aug 22 00:00:00 CST 2025
结束时间:Fri Aug 22 23:59:59 CST 2025
开始时间:Thu Aug 21 00:00:00 CST 2025
结束时间:Thu Aug 21 23:59:59 CST 2025
1.2. 查询执行日志表
select
COUNT(handle_code) triggerDayCount,
SUM(case when (trigger_code in (0, 200) and handle_code = 0) then 1 else 0 end) as triggerDayCountRunning,
SUM(case when handle_code = 200 then 1 else 0 end) as triggerDayCountSuc
from
xxl_job_log
where
trigger_time between
#{from} and #{to}
- triggerDayCount,即
任务总数量; - triggerDayCountRunning,即
执行中的任务数量; - triggerDayCountSuc,即
执行成功的任务数量; - triggerDayCount - triggerDayCountRunning - triggerDayCountSuc 就是
执行失败的任务数量。
1.3. 将以上指标,记录到log-report中
将以上指标,记录到log-report中。
2. 清理过期的xxl-job-log记录,而非服务运行日志
2.1. 查询已过期的日志(默认是30天前)
select id
from xxl_job_log
where trigger_time <=#{clearBeforeTime}
order by id asc
limit 1000
clearBeforeTime:当前日期 - 30天。
2.2. 删除过期的日志
删除过期的日志。
856

被折叠的 条评论
为什么被折叠?



