定义切面注解的方式来记录操作日志信息

在日常开发中,我们经常需要记录一些操作日志;如果每个在方法里面写API,会比较麻烦;
故我们可以定义切面,来进行处理日志的记录;简化开发;

下面的案例是自定义注解来记入日志;可以根据自己的需求来改变自己的切面实现和连接点,
下面只是提供一个案例参考。

一、注解SaveLog

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SaveLog {
    String operationFunction();
    OperationType operationType();
    String tableName();
}

操作枚举:

@AllArgsConstructor
@Getter
public enum OperationType {
    SELECT, ADD, UPDATE, DELETE, COMPOSITE
}

配置类:


package com.javacode2018.aop.demo11.test1;
 
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
 
@ComponentScan //@1
@EnableAspectJAutoProxy //@2
public class MainConfig1 {
}

二、切面实现方法

@Aspect
@Component
@Slf4j
public class SaveLogAspect {

    @AfterReturning(returning="result", pointcut="@annotation(SaveLog)", argNames = "joinPoint,result,SaveLog")
    public void process(JoinPoint joinPoint,Object result, SaveLog saveLog) throws Throwable {
        try {
            Object[] args = joinPoint.getArgs();
            String params = bulidLog(joinPoint.getArgs());
            //记录日志的API 改成自己记录日志方法即可
            OperationLog.saveLog(new OperationLog(saveLog.operationFunction(), saveLog.operationType(), params,result.toString(), saveLog.tableName(), "true"));
        } catch (Exception e){
            //log.info("SaveLogAspect",e);
        }
    }

    public static String bulidLog(Object[] args){
        String str = "";
        for (int i = 0;i<args.length;i++) {
            str += args[i] + ",";
        }
        String param = str.substring(0, str.lastIndexOf(","));
        if (StringUtils.isEmpty(param)) {
            return "";
        } else {
            return param;
        }
    }  
}

三、实际使用

    @SaveLog(operationFunction = "查询首页客户列表",operationType = OperationType.SELECT,tableName = "表明")
    @GetMapping("/list/get")
    public PageResultDomain getPageList(String token, QueryDTO domain) {
    }
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值