Skip to content

注解自动操作日志

1. 注解自动记录操作日志

使用 注解,自动记录操作日志

java
    @PostMapping("/add")
    // 自动记录操作日志
    @AutoOperateLog(logMethod = "/user/add", logMsg = "添加用户")
    public void add(@RequestBody ZUserRoleSaveDTO zUserRoleSaveDTO) {
        userService.add(zUserRoleSaveDTO);
    }

自动操作日志

说明

  • 日志自动保存到z_operate_log表中
  • 保存的字段包括:
    用户id、用户名、执行方法名称、执行方法描述、操作内容、请求路径、IP地址、操作时间
  • 其中【用户id、用户名】,需要用户登录后,根据当前登录token自动获取
    若是公开接口(无需登录就能访问的接口),用户未登录时,不能记录用户信息,其他信息会记录

2. 操作日志管理

  • 所有记录的操作日志,可在管理后台进行管理,如下图所示:

操作日志管理

3. 操作日志保留天数配置

  • 在后台配置文件 application.yml 中,有如下配置:
yaml
com.kg:
    #默认操作日志,保存天数,默认:180天(定时任务自动删除旧日志)
    auto-operate-log: 180
  • 该配置配合定时任务:DeleteOperateLogJob.java,定时清理超过指定天数的日志。

操作日志定时删除的定时任务,如下图所示:

操作日志定时任务管理

java
public class DeleteOperateLogJob implements Job {
    @Value("${com.kg.auto-operate-log:180}")
    private Integer autoOperateLogDay;
    @Resource
    private ZOperateLogService logService;

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 删除操作日志,默认保存180天(在com.kg.auto-operate-log里配置)
        StaticLog.warn("---delete operate log---(Delete " + autoOperateLogDay + " days ago!!!)");
        String deleteDate = TimeUtils.now().addDay(-autoOperateLogDay).toFormat("yyyy-MM-dd 00:00:00");
        logService.lambdaUpdate().lt(ZOperateLog::getCreateTime, deleteDate).remove();
    }
}