aop做日志收集,且不同外部接口入参种获取某一个特定标识(请求外部接口,需要收集出入参且失败成功都需要插入记录)

本文介绍了如何使用AOP的环绕通知模式来收集外部接口的请求和响应日志,特别是在不同接口入参不同时,如何通过自定义注解获取一个唯一的业务ID。步骤包括定义注解、切面处理、异步保存日志、日志实体类的创建、以及在实际业务方法中如何应用和测试。通过这种方式,能够有效地跟踪和记录接口调用的详细信息。
摘要由CSDN通过智能技术生成

业务场景:通过aop的环绕模式,做请求外部接口的请求和响应日志收集。其中不同接口入参不一样,但是我需要获取一个唯一标识作为业务id。

1.定义一个注解:注入到方法

package com.jd.car.laserbeak.infrastructure.jd.jsf.logrecordaop;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author xyd
 * @description:
 * @date 2020/2/24
 */
@Target(ElementType.METHOD)//我是控制到方法,这个根据自己实际业务选
@Retention(RetentionPolicy.RUNTIME)//什么时候切,这个都可以根据业务定
public @interface LogRecord {

    String flag() default "";//用来获取入参的标识(每个业务的入参属性不一样)
}

2.切面:可以根据自己业务定义自己切面的范围,和用什么方式advice

package com.jd.car.laserbeak.web.config;

import com.alibaba.fastjson.JSON;
import com.jd.car.laserbeak.service.requsetlog.RequsetLogService;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @author xyd
 * @description: 日志记录切面处理类
 * @date 2020/2/24
 */
@Aspect
@Component
public class LogRecordAspect {
    private static Logger LOG = LoggerFactory.getLogger(LogRecordAspect.class);

    @Autowired
    private RequsetLogService requestLogServie;

//切的地方。我是对我的注解切入。我们可以根据需要定义作用域    @Pointcut("@annotation(com.jd.car.laserbeak.infrastructure.jd.jsf.logrecordaop.LogRecord)")
    public void pointcut() {
    }

    @Around("pointcut()")
    public Object around(ProceedingJoinPoint point) {
        Object result = null;
        String message;
        try {
            // 执行方法
            result = point.proceed();
//成功后,返回的业务信息获取。用作存日志使用
            messa
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值