Skip to content

日志监控与定时任务 ​

日志回答发生了什么,监控回答当前状态,任务负责计划执行。三者不能互相替代,也不应把一次接口成功视为后台恢复已全部完成。

出现问题先去哪里看 ​

现象查看位置
Java 启动失败IDE/命令行控制台;Docker 查看 app 日志
用户说某次操作失败对应时间的操作日志,再结合应用异常
登录失败或疑似爆破登录日志与安全审计,必要时检查锁定策略
定时操作没有执行任务启用状态、执行计划与任务执行日志
用户会话异常在线用户及会话状态

脚本启动的应用日志位于根目录 logs/art-design-pro-x-java.log;IDE 是否写文件由实际运行配置决定。容器日志命令见 部署运维,开发数据服务日志见 常见问题。

日志与安全事件 ​

入口内容适用边界
应用日志启动、配置检查、异常及后台执行信息由部署环境收集和保留
登录日志登录结果与相关身份/IP 信息登录结果与审计可用性分离
操作日志HTTP 修改请求与业务动作不是所有业务历史的无损事件总线
安全审计爆破、新 IP、敏感失败、权限变更、日志清理、强制下线等规则事件仅覆盖已实现的采集与检测规则

操作日志拦截器采集 /api/** 下的 POST/PUT/PATCH/DELETE,排除登录、注册和刷新。@Log 声明模块、动作和采集开关,缺少注解仍有路径/方法兜底。

密码字段和临时文件凭证不应写入普通日志。鉴权拒绝未进入采集链、存储故障或进程中断不具备普通 HTTP 日志无损保证。支付内部状态变化另通过事务内审计记录,详见 商城与支付。

安全事件可确认、解决或忽略,处置记录用于跟踪。登录失败阈值与时间窗由系统参数控制,默认 5 次 / 15 分钟;这与站点登录锁定是不同机制。

监控能力 ​

服务、Redis、在线用户与访客等由 monitor 提供。缓存监控只允许清理受控业务命名空间,不提供任意 Redis 键删除入口,也不把登录态列为普通缓存清理对象。详见 业务缓存。

健康检查 UP 只是一项启动/依赖信号。生产还应观察错误率、任务失败、存储恢复积压和支付未确认状态,按实际基础设施接入告警。

系统维护任务 ​

系统任务由 Spring 定时触发、CronScheduleService 计算计划、ScheduledTaskRegistry 按处理器编码分发。管理页面配置的是已有处理器及参数,不会执行任意 Java 类、脚本或 Shell。

新增处理器实现 tasks/spi/ScheduledTaskHandler:

java
TaskHandlerDefinition definition();
TaskExecutionResult execute(TaskParameters parameters);

在所属业务域注册为 Spring Bean,提供唯一合法编码、参数定义和有界执行逻辑。注册表拒绝重复编码;参照 TaskLogCleanupHandler 等真实实现,不仅往前端下拉框加一个选项。

并发与失败 ​

计划执行用 MySQL 行锁认领到期任务,FORBID 策略还使用 Redis 固定 30 分钟租约。手动/多实例任务必须有小于租期的执行上限并实现幂等,不能假设锁会无限自动续期。

失败让异常传播给执行器记录,不吞异常返回成功。外部调用设置超时,批处理限制每轮数量;长任务按实际用例拆分或设计经过验证的持久化执行控制。

商城商品排期、超时订单与支付恢复有独立调度配置,文件恢复也单独运行。关闭商城 scheduler 不会停止全部维护任务,更不代表已进入可备份的停写状态。

验证与排查 ​

先查任务启用状态、cron、处理器编码、参数和执行日志,再查锁、Redis 与业务错误。新增任务覆盖成功、失败、重复执行与超时边界,不能只验证“日志出现一次”。

源码入口:tasks/service、tasks/spi、各业务域 task,审计位于 audit,应用调度装配在 art-admin/admin/config。

根据 MIT 许可证发布