sringboot自动以切面日志记录标签Aspect


import org.apache.commons.lang.StringUtils;

import java.lang.annotation.*;

/**
 * 自定义操作日志记录注解
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.METHOD})
public @interface Log {

    /**
     * 功能
     */
    String function() default StringUtils.EMPTY;

    /**
     * 操作人类别
     */
    OperatorType operatorType() default OperatorType.OTHER;

}
package org.example.log;

/**
 * 操作人类别
 *
 */
public enum OperatorType {

    /**
     * 查询
     */
    SELECT,

    /**
     * 新增
     */
    INSERT,

    /**
     * 修改
     */
    UPDATE,

    /**
     * 删除
     */
    DELETE,

    /**
     * 其它
     */
    OTHER,

    /**
     * 授权
     */
    GRANT,

    /**
     * 导出
     */
    EXPORT,

    /**
     * 导入
     */
    IMPORT,

    /**
     * 强退
     */
    FORCE,

    /**
     * 生成代码
     */
    GEN_CODE,

    /**
     * 清空数据
     */
    CLEAN

}

package org.example.log;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

/**
 * 操作日志记录处理
 */
@Slf4j
@Aspect
@Component
public class LogAspect {

    /**
     * 处理完请求后执行
     */
    @AfterReturning(pointcut = "@annotation(controllerLog)")
    public void doAfterReturning(Log controllerLog) {
        handleLog(controllerLog);
    }

    protected void handleLog(Log controllerLog) {
        try {
            // 获取当前的用户
//            LoginUser loginUser = SpringSecurity.getLoginUser();

            // *========数据库日志=========*//
//            operateLog operateLog = operateLog.builder()
//                    .operateUserId(loginUser.getSysUserId())
//                    .operateName(loginUser.getTrueName())
//                    .operateFunction(controllerLog.function())
//                    .OperateType((byte) controllerLog.operatorType().ordinal())
//                    .operatorIP(loginUser.getIpaddr())
//                    .operateDate(LocalDateTime.now())
//                    .belong(SysConstants.SYS_CODE)
//                    .build();

            // 保存数据库--这里我用的是异步事件
//            SpringUtils.publishEvent(operateLog);
            log.info("日志记录,type="+controllerLog.operatorType().ordinal()+"----function="+controllerLog.function());
        } catch (Exception exp) {
            // 记录本地异常日志
            log.error("==前置通知异常==");
            log.error("异常信息:{}", exp.getMessage());
            exp.printStackTrace();
        }
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值