微服务操作日志拦截

本文介绍了如何在微服务架构中实现操作日志的拦截与入库。通过UserLogAopAspect拦截类和UserOperateLogAnnotation注解,详细阐述了在控制器调用过程中记录并存储操作日志的方法,并提供了创建SQL脚本的相关步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拦截类UserLogAopAspect

@Slf4j
@Aspect
@Component
@Order(AopOrderConst.LOG_AOP_ORDER)
public class UserLogAopAspect {

    @Autowired
    private IUserOperateLogService userOperateLogService;

    @Autowired
    private ThreadPoolTaskExecutor threadPoolTaskExecutor;

    @Around("@annotation(annotation)")
    public Object logSave(ProceedingJoinPoint joinPoint, UserOperateLogAnnotation annotation) throws Throwable {
        long start = System.currentTimeMillis();
        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();

        //调用原来的方法
        Object result = joinPoint.proceed();
        UserOperateLogAnnotation operateLogAnnotation = methodSignature.getMethod().getDeclaredAnnotation(UserOperateLogAnnotation.class);
        //如果需要记录数据库开启异步操作
        if (Objects.nonNull(operateLogAnnotation) && operateLogAnnotation.saveDb()) {
            ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder
                    .getRequestAttributes();
            HttpServletRequest request = servletRequestAttributes.getRequest();
            // 请求流水号
            String traceId = StringUtils.defaultString(TraceUtils.getTrace(), MDC.get(TraceConstant.LOG_TRACE_ID));
            String httpMethod = request.getMethod();
            List<Object> httpReqArgs = new ArrayList<Object>();
            UserOperateLogEntity operateLogEnt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值