首先要说明我数据库中有个表叫sys_oper_log,日志表,记录谁在哪个时间点做了什么事情。
其次,再明确一下日志的意义:
- 责任追溯
- 数据分析
此外,我们的日志功能,只做“浏览”和“插入”,不做修改。
日志功能如何实现?
Aop(面向切面编程)
用的自定义注解@Log,需要用在哪里就在哪里加上这个注解。
为了记录操作正常的日志和操作失败的日志,用两种通知类型,一种后置通知(正常结束)一种异常通知。
首先通过在token里面获取了当前的用户,然后创建了一个Log对象。Log对象对应数据库的日志表,接着补全了一堆的参数。
从线程池中取出一个线程执行日志插入的任务,并且延迟10ms执行(ScheduleExecutorService)。
思考:为什么要延迟10ms再执行呢?
前端发送请求给服务器要执行某个功能的时候,功能完成的时候会经过后置通知或者异常通知。这里他用了线程池,新开了一个线程执行插入日志任务,还用ScheduleExecutorService这个类执行了异步延时任务,延时了10ms执行这个任务。 目的就是为了先让主线程先及时的响应给前端,然后再执行插入日志的任务。