springboot如何使用AOP做访问请求日志
作者:闻窗 发布时间:2023-11-11 10:12:19
标签:spring,boot,AOP,访问,请求,日志
这篇文章主要介绍了springboot如何使用AOP做访问请求日志,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
springboot中使用AOP做访问请求日志:这次引入springboot的aop和日志
1、pom.xml引入:
<!--springBoot的aop,已经集成了spring aop和AspectJ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-logging -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
2、切面类配置:
@Component
@Aspect
public class LogAspect {
private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
//切入点表达式,com.springboot.controller自己controller包的路径
@Pointcut("execution(public * com.springboot.controller..*.*(..))")
public void pointCut(){
}
@Before("pointCut()")
public void beforeMethod(JoinPoint joinPoint){
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = servletRequestAttributes.getRequest();
//获取需要打印的参数信息
String requestURI = request.getRequestURI();
String method = request.getMethod();
String remoteAddr = request.getRemoteAddr();
//这里使用的是阿里的fastjson
String jsonString = JSON.toJSONString(joinPoint.getArgs());
//打印信息
logger.info("------------------------请求信息----------------------------------");
logger.info("请求时间 :{}",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
logger.info("remoteAddr: {} ",remoteAddr);
logger.info("requestURI : {}",requestURI);
logger.info("Controller : {}", joinPoint.getTarget().getClass());
logger.info("method type: {}" ,method);
logger.info("req paras: {}",jsonString);
logger.info("------------------------请求信息-----------------------------------");
}
}
效果:
com.springboot.common.aop.LogAspect : ------------------------请求信息----------------------------------
com.springboot.common.aop.LogAspect : 请求时间 :2020-01-02 22:38:40
com.springboot.common.aop.LogAspect : remoteAddr: 0:0:0:0:0:0:0:1
com.springboot.common.aop.LogAspect : requestURI : /user/10001
com.springboot.common.aop.LogAspect : Controller : class com.springboot.controller.UserController
com.springboot.common.aop.LogAspect : method type: GET
com.springboot.common.aop.LogAspect : req paras: [10001]
com.springboot.common.aop.LogAspect : ------------------------请求信息---------------------------------
这里只做访问请求的日志打印,还可以后置通知,打印响应信息,结合环绕通知可以打印程序执行的时间等其他操作。
来源:https://www.cnblogs.com/tdyang/p/12142177.html


猜你喜欢
- 这里使用的是spring-security和原生的jasig cas包来进行整合,为什么没有直接使用spring提供的spring-secu
- 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JA
- 这是Hadoop学习全程记录第1篇,在这篇里我将介绍一下如何在Linux下安装Hadoop1.x。先说明一下我的开发环境:虚拟机:VMwar
- 前言关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。Fina
- 前言最近遇到想要实现三指滑动监听的需求,实现代码不方便贴出来,但是思路还是可以记录一下。Muilti-touch 双指缩放探索首先要实现On
- 一、理解 “ 服务器 / 浏览器 ”沟通流程(3步)第1步:浏览器使用<img src=&qu
- 最终效果项目地址https://github.com/Tecode/flutter_widget实现方法安装插件安装video_player
- RocketMQ存储路径默认是${ROCKRTMQ_HOME}/store,主要存储消息、主题对应的消息队列的索引等。1、概述查看其目录文件
- 一、首先在Spring Boot项目中,手动添加异常方法进行测试@Transactional(rollbackFor=Exception.c
- 起源最近公司要做多租户,Mybatis-Plus的多租户插件很好用,但是有一个场景是:字典表或者某些数据表,一些数据需要在各个租户之间共享,
- 本文介绍Android实现首字母导航条,先看张效果图,具体怎么实现看代码吧具体的步骤1.整体布局的显示 2. 实现A-Z的分组 3. 自定义
- 由于要做一个新项目,所以打算做一个简单的图片验证码。先说说思路吧:在服务端,从一个文件夹里面找出8张图片,再把8张图片合并成一张大图,在8个
- 一.递归方法1.递归就是自己调用本身的方法,前提是有方法。2.递归使用找出递归的规律递归要有出口条件,也就是结束条件3.注意事项递归次数不能
- 本文实例讲述了java中response对象用法。分享给大家供大家参考,具体如下:<jsp:forward>动作元素用于运行时在
- 前台form 表单:设置method=post,enctype=multipart/form-data。struts2在原有的上传解析器继承
- 在平时的工作中,估计大多数都做过轮询调度的任务,比如定时轮询数据库同步,定时邮件通知等等。大家通过windows计划任务,windows服务
- 本文实例讲述了C#通过WIN32 API实现嵌入程序窗体的方法,分享给大家供大家参考。具体如下:这是一个不使用COM,而是通过WIN32 A
- RetrofitA type-safe HTTP client for Android and Java 适用于Java和Android的安
- C语言数据结构基本算法希尔排序前言:基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相
- 记录使用Scroller实现平滑滚动,效果图如下:一、自定义View中实现View的平滑滚动public class ScrollerVie