springboot使用aop记录日志

很高兴又和大家见面了。 大家好,我是小铁。 一个幽默且有感染力的csdn博主。
在这里插入图片描述
过多的废话我也不赘述了。 今天我来讲讲 springboot 中如何应用aop来记录日志

如果有的同学不清楚什么是aop,请直接跳转这里。 AOP是什么? (请不懂的同学直接跳转学习去,本片文章不会过多的讲述)

前言:aop解决的这个办法有很多种,在这里我给大家介绍两种最简单的。(但是我只会讲解,最方便也是企业最常用的办法)

一、自定义注解(这里不做过多的赘述) 传送门
二、扫描包的方式。传入的参数在请求头里面(企业常用)

废话不多说,咱们直接上干货。(中间我会为大家讲解原理,先跟随我上代码)

@Aspect
@Configuration
@Slf4j
public class SysLogAspect {

    //定义切点 @Pointcut
    @Pointcut("execution (* com.szht.jxgl.controller..*.*(..)) ") //扫描包的路径
    public void logPoinCut() {}

    //通知
    @Before("logPoinCut()")
    public void doBefore(JoinPoint joinPoint){
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        HttpSession session = request.getSession();
         String mc = request.getHeader("logOperation"); //获取到前端传输过来的值
         try {
           String ss = "";
           ss  = URLDecoder.decode(mc,"UTF-8"); //进行解密,因为前端是加密过来的(后面我会给大家讲述为啥加密)
		   log.error("前置通知结束");
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         }
    }

    @AfterReturning("logPoinCut()")
    public void doAfterReturning(JoinPoint joinPoint){
        log.error("--------执行切入方法--------");
        log.error("---------一般进行插入的操作");
    }
}

我把我大部分的逻辑全都删除了,只留下最简单的操作 大家可以看一下。(你们先看,作者我先喝口茶冷静一下。)
在这里插入图片描述

aop这个东西简单来说,有几个组成点需要注意一下。

一、Aspect (切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
二、Joint point(连接点): 表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
三、Pointcut (切点): 表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
四、Advice (增强) : Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
五、Target (目标对象): 织入 Advice 的目标对象.。
六、Weaving (织入): 将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程

速记方法:Aspect就是找茬(pointcut)揍你(target)一顿(advice),一群欠揍的的人(join point)
其他的科普知识,你们可以去网上找找资料。很简单的就找到了,在这里我就不一一赘述了。

前端

前端的话就比较简单了,搞一个头部请求。然后把你需要的东西进行加密处理。因为heard当中无法传输中文

		let ss = encodeURIComponent("部门计算");
        axios.post(url, data, {headers : {'logOperation': ss}}).then((response) => {
         	//todo.. 这里省略
        }).catch((error) => {
			//todo.. 这里省略
        });

好了,今天的文章到此结束了。喜欢小铁的同学请给我点点赞吧。

愿。你在他乡也能勇往直前,我们终将在顶峰相见。 —《小铁经典语录》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值