AOP切面实现方法日志打印耗时计算

本文介绍如何使用AOP(面向切面编程)在Spring框架中实现服务层方法的日志打印和耗时统计。通过配置AspectJ自动代理,结合环绕通知,对指定包下的所有方法进行拦截,记录方法调用前后的日志信息及执行耗时。

很简单,

通过AOP实现每个方法访问时候统一进行日志打印和耗时计算,

相关配置:

1、spring配置

在spring配置xml文件中设置启用aop

    

<aop:aspectj-autoproxy proxy-target-class="true" />


2、aop具体业务类(通过注解的方式,使用“环绕通知”)

 

@Aspect
@Component
public class LoggingAspect {
 
    private static final Log logger = LogFactory.get();
 
    // service层的统计日志/耗时(方法所在的包)
    public static final String POINT = "execution (* cn.xx.xx.xxxxx.service.impl.*.*(..))";
 
    /**
     * 统计方法执行耗时Around环绕通知
     * @param joinPoint
     * @return
     */
    @Around(POINT)
    public Object loggingAround(ProceedingJoinPoint joinPoint) {
        long startTime = System.currentTimeMillis();
        // 定义返回对象、得到方法需要的参数
        Object resultData = null;
        Object[] args = joinPoint.getArgs();
        Object apiName = args[0];
        try {
            // 调用钉钉接口
            logger.info("======>请求[xxx]接口开始,参数:{}", args);
            resultData = joinPoint.proceed(args);
            long endTime = System.currentTimeMillis();
            logger.info("======>请求[xxx]接口完成,耗时:{},返回:{}", (endTime - startTime), resultData);
        } catch (Throwable e) {
            // 记录异常信息
            long endTime = System.currentTimeMillis();
            logger.error("======>请求[xxx]接口异常!耗时:{}", (endTime - startTime));
        }
        return resultData;
    }
}


配置完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyondwild

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值