首页 > 其他分享 >aop实现日志记录通过自定义注解方式

aop实现日志记录通过自定义注解方式

时间:2023-04-28 14:44:38浏览次数:32  
标签:info log 自定义 joinPoint 目标 aop 注解 日志 方法

切面类切入点引入注解
@Pointcut("@annotation(com.test.aop.MyLog)") private void pointcut(){}

注解类
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) //指定实现的类型及运行时机
public @interface MyLog {
}

在使用的方法上加自定义注解
@MyLog
方法

log.info("MyAspect8 around before ...");

//1. 获取 目标对象的类名 .
String className = joinPoint.getTarget().getClass().getName();
log.info("目标对象的类名:{}", className);

//2. 获取 目标方法的方法名 .
String methodName = joinPoint.getSignature().getName();
log.info("目标方法的方法名: {}",methodName);

//3. 获取 目标方法运行时传入的参数 .
Object[] args = joinPoint.getArgs();
log.info("目标方法运行时传入的参数: {}", Arrays.toString(args));

//4. 放行 目标方法执行 .
Object result = joinPoint.proceed();

//5. 获取 目标方法运行的返回值 .
log.info("目标方法运行的返回值: {}",result);

log.info("MyAspect8 around after ...");
return result;

 

标签:info,log,自定义,joinPoint,目标,aop,注解,日志,方法
From: https://www.cnblogs.com/caoaman/p/17362182.html

相关文章

  • 为程序添加日志
    这里,介绍一个头文件,客制化了日志,方便我们调试。在编写程序的时候,添加上这个头文件,就可以了。代码如下:log.h:#ifndef_LOG_H_#define_LOG_H_#include<stdio.h>#defineDEBUG_EN(1u)#if(DEBUG_EN)#defineDEBUG_MAX_SIZE512unsignedcharszBuf[DEBUG_MAX_SIZE];......
  • 【图文详解】一文全面彻底搞懂HBase、LevelDB、RocksDB等NoSQL背后的存储原理:LSM-tree
    LSM树广泛用于数据存储,例如RocksDB、ApacheAsterixDB、Bigtable、HBase、LevelDB、ApacheAccumulo、SQLite4、Tarantool、WiredTiger、ApacheCassandra、InfluxDB和ScyllaDB等。在这篇文章中,我们将深入探讨LogStructuredMergeTree,又名LSM树:许多高度可扩展的NoSQL分......
  • css cursor: url 自定义鼠标光标遇到的坑
    1、大小不能大于32*32(切记)本人就是在这个上面栽了很久,一直出不来2、最好是ico,cur格式3、使用绝对路径4、在逗号后面加通用游标,如官网所写 示例:map.style.cursor="url('/img/cursor.ico'),pointer";附:在线修改图片大小网址:在线图片大小修改器,图片尺寸修改,格式转换【免费】png等......
  • pytest---增加log日志(pytest.ini)
    前言在自动化操作过程中,我们可以通过增加log日志的情况进行更加直观的了解我们测试用例的执行情况,包括执行状态,方便排查问题和分析问题,前面有简单介绍pytest.ini这个文件,他可以帮助我们更加方便的执行测试用例,pytest.ini中有单独为log日志增加的一些信息log_clilog_cli:表示在执......
  • C/C++ 自定义结构体直接用自定义结构体=赋值
    自定义结构体中没有管理堆空间对象的指针structst_t{inta;shortb;charc;chars[128]={0};};对比使用=和memcpy的汇编代码 结论 两者均调用了memcpy,结构体中不带指针(管理堆空间),可以直接使用浅拷贝,不过个人倾向后者,显式调用memcpy。......
  • selenium笔记之webDriver获取浏览器控制台日志
    大家应该都听过或者用过sentry,非常好用和强大,有用户当时的各种环境,关联sourceMap后能定位到代码层面(Sentry是一个开源的错误跟踪工具,帮助开发人员监控和诊断他们应用程序中的问题。它提供实时监测、警报和分析多个平台和编程语言中的错误和异常。Sentry可以与各种框架和服务集......
  • 【CPP】自定义排序--针对智能指针
    目录代码块代码块#include<iostream>#include<memory>#include<vector>#include<algorithm>usingnamespacestd;classBase{public:virtualvoidPrint(){std::cout<<"IamBase!\n";}};classDerived1:publi......
  • 基于注解方式声明切面(AOP)
    基础知识:【首先启动对@AspectJ注解的支持(蓝色部分):<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/ao......
  • AOP中的概念
    基础知识【Aspect(切面):指横切性关注点的抽象即为切面,它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面横切性关注点的抽象.joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法......
  • 使用Spring进行面向切面(AOP)编程
    基础知识:【要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework......