定义一个切面日志

spring 文章 2024-03-25 10:11 428 0 全屏看文

AI助手支持GPT4.0

我们可以通过aspect进行无侵入式的日志记录,

具体代码如下:

定义一个注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogOperation {
    String value() default "";
}

我们定义一个切面处理类。

并定义切面,然后,通过@Around("logPointCut()")注解,你定义了一个环绕通知(Around Advice),它将围绕着上述切点定义的方法执行。这意味着,每当有方法被@LogOperation注解标记,并被调用时,around方法就会被触发。在这个方法内部,你可以在目标方法执行前后添加自定义逻辑,比如记录日志、计算执行时间等。

/**
* 系统⽇志,切⾯处理类
*/
@Aspect
@Component
public class LogOperationAspect {
    @Autowired
    private SysLogOperationService sysLogOperationService;
    
    @Pointcut("@annotation(cn.sanshu.common.annotation.LogOperation)")
    public void logPointCut() {
        
   }
    
    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        long beginTime = System.currentTimeMillis();
        try {
            //执⾏⽅法
            Object result = point.proceed();
            
            //执⾏时⻓(毫秒)
            long time = System.currentTimeMillis() - beginTime;
            //保存⽇志
            saveLog(point, time, OperationStatusEnum.SUCCESS.value());
            
            return result;
       }catch(Exception e) {
            //执⾏时⻓(毫秒)
            long time = System.currentTimeMillis() - beginTime;
            //保存⽇志
            saveLog(point, time, OperationStatusEnum.FAIL.value());
            
            throw e;
       }
   }
    
    private void saveLog(ProceedingJoinPoint joinPoint, long time,
Integer status) {
        //逻辑对象处理
        
        //保存到DB
        sysLogOperationService.save(log);
   }
}


使用:

image.png

-EOF-

AI助手支持GPT4.0


国内超级便宜服务器

摸鱼人热门新闻聚合

钻级赞助商 我要加入

开发者在线工具

第三方支付技术请加QQ群

相关文章
spring项目输出当前的activeprofile
spring security中 UsernamePasswordAuthenticationToken 内部处理的详细步骤。
所有spring的bean都初始化完成,然后在执行某一方法
Java返回指定索引的泛型参数
谷歌联盟“自动付款待处理”是什么意思?为什么会显示“自动付款待处理”
随便看看
和平精英战术随机应变、城区刚枪、野点发育、找车转移 是什么意思 8405
老爷子收到了057128256416的电话号码 3035
阿里云com、cn域名续费优惠码(2020年3月可用) 2792
线上防疫题库正确答案 2855
线上防疫题库正确答案(多选题) 4746
微信设置不可以使用小程序(游戏小程序) 5529
adsense申请已经支付的订单回退的网址 3145
BT面板查看网站入口、账号密码的命令 5898
ucloud海外服务器超级优惠券 3199
根据您的消费情况,您的延停权益已发生变化,变更后的延停权益为延停额度20.00元 5752