Java 日志AOP

日志aop
https://www.jianshu.com/p/577e4bd47195
建一个日志切面类


用 @Aspect 开启切面,

@Aspect
public class OperateLogAspect {


@Pointcut("execution(* *..CompInfoFragment.collectLog(..))")
    public void logForFunction(){};

    @Before("logForFunction() && args(function,isSucc,ppid,finishOpenTime,startOpenTime)")
    public void log(JoinPoint joinPoint,String function, boolean isSucc,long ppid,long finishOpenTime,long startOpenTime){
        collectLog(function,isSucc,ppid,finishOpenTime,startOpenTime);
    }


    
@Pointcut 是定义切点:通过类名+方法名模糊匹配到之前定义的空方法

logForFunction是切点名称 自己定义

@Before("logForFunction() 是切点时机:这里在这个切点(也就是空方法执行)前,插入我们的操作日志记录,
注意这里的方法参数名称必须和空方法一致,并且不能是对象!不能是enum,只能是基本数据类型。

collectLog(function,isSucc,ppid,finishOpenTime,startOpenTime);  自己定义的日志逻辑

 

 

与切面aop结合

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface OptLog {

写注释标识类,

@Around("@annotation(com.kpmg.datalake.operatelog.annotation.OptLog)")

在切点处指向注解

在方法出标志处注解

  @PostMapping("/saveProject")
  @OptLog(logType = LogTypeEnum.OPERATION, module = "system", description = "操作项目")
  public ServerResponse<String> saveProject(@RequestBody ProjectEntityVO projectEntityVO ) {
    return projectManagementService.saveProjectEnt(projectEntityVO.getProject(),projectEntityVO.getEntity());
  }

 

 

 

 

aop原理

https://www.cnblogs.com/lcngu/p/5339555.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值