Appearance
注解自动操作日志
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();
}
}