spring 切面日志----》controller

本文介绍如何在Spring框架中使用切面(AOP)技术实现方法级别的日志记录。通过自定义注解@ControllerLog,标记需要记录日志的方法,并在切面类中实现请求参数的打印和日志的记录,以减轻控制器的压力并便于后期问题排查。

在 controller 中 纯粹的为 接受请求的控制,只要两件事情,一个是 接受请求,第二个事情,就是条件判断(不建议在service中进行判断,因为有些系统是分布式的,可能需要发送一次请求,加大系统的开销,所以在controller中就进行判断,减轻系统的压力),但是比如日志操作。不应该在controller中进行大量的写,但是为了日后好排查问题和维护,日志又是不可或缺的。所以,切面日志变得很重要了。

首先 日志的记录应该是 方法级别的,所以我们写一个注解。来标记 此方法是需要记录日志的。

关于 自定义注解的学习,也是我的博客

https://blog.youkuaiyun.com/drsbbbl/article/details/96478668

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ControllerLog {
    /**
     * 方法描述
     * @return
     */
    public String description() default "";
}
 

首先我们要有切面类: 关于pom文件等会提供个下载连接

切点表达式写法: 具体看 spring官方文档

这种写法 还是看到spring 官方这么写很方便 就拿来用了

 

 

 

 

 

主要分为 请求开始打印所有的请求参数  我是喜欢写在方法的参数上,有时也可以通过request 获取到 下面 是可以通过request获取方法参数的

    Map<String,String[]> map = request.getParameterMap();
        
        for(String key : map.keySet()) {
            logger.debug("--debug--day_report key:" + key + ", value:" + map.get(key));
            String[] value = map.get(key);
            
            if(value == null) {
                continue;
            }
            
            if(value.length == 1) {
                
                String v = value[0];
                
                if(v == null || v.trim().equals("")) {
                    
                    continue;
                }
                
                params.put(key, v);
            } else {
            
                params.put(key, value);
            }
        }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值