异步操作日志记录如何实现?(ScheduleExecutorService类)

首先要说明我数据库中有个表叫sys_oper_log,日志表,记录谁在哪个时间点做了什么事情。

其次,再明确一下日志的意义:

  1. 责任追溯
  2. 数据分析

 此外,我们的日志功能,只做“浏览”和“插入”,不做修改。

日志功能如何实现?

Aop(面向切面编程)

用的自定义注解@Log,需要用在哪里就在哪里加上这个注解。

为了记录操作正常的日志和操作失败的日志,用两种通知类型,一种后置通知(正常结束)一种异常通知。

首先通过在token里面获取了当前的用户,然后创建了一个Log对象。Log对象对应数据库的日志表,接着补全了一堆的参数。

从线程池中取出一个线程执行日志插入的任务,并且延迟10ms执行ScheduleExecutorService)。

思考:为什么要延迟10ms再执行呢?

前端发送请求给服务器要执行某个功能的时候,功能完成的时候会经过后置通知或者异常通知。这里他用了线程池,新开了一个线程执行插入日志任务,还用ScheduleExecutorService这个类执行了异步延时任务,延时了10ms执行这个任务。 目的就是为了先让主线程先及时的响应给前端,然后再执行插入日志的任务。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值