当前位置: 首页 > news >正文

Spring Boot AOP日志打印实现

在 Spring Boot 3.1.12 中使用 AOP 实现日志打印,记录前端传入的参数和后端返回的数据,可以按照以下步骤进行:

  1. 添加依赖
    首先,确保你的 pom.xml 文件中包含了 Spring AOP 的依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  1. 创建切面类
    接下来,创建一个切面类,使用 @Aspect 注解标记该类为切面,并使用 @Component 注解将其注册为 Spring Bean。
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;@Aspect
@Component
public class LoggingAspect {private final Logger logger = LoggerFactory.getLogger(this.getClass());// 定义切点,匹配所有Controller层的方法@Pointcut("execution(* com.example.demo.controller..*(..))")public void controllerMethods() {}// 在方法执行前打印请求参数@Before("controllerMethods()")public void logBefore(JoinPoint joinPoint) {logger.info("Method: {}", joinPoint.getSignature().toShortString());Object[] args = joinPoint.getArgs();for (Object arg : args) {logger.info("Request Param: {}", arg);}}// 在方法返回后打印返回结果@AfterReturning(pointcut = "controllerMethods()", returning = "result")public void logAfterReturning(JoinPoint joinPoint, Object result) {logger.info("Method: {}", joinPoint.getSignature().toShortString());logger.info("Response: {}", result);}
}
  1. 配置日志级别
    确保你的 application.properties 或 application.yml 文件中配置了适当的日志级别,以便能够看到日志输出。

application.properties

logging.level.com.example.demo=DEBUG
  1. 测试
    启动你的 Spring Boot 应用,并访问一些 Controller 方法,你应该能够在控制台中看到类似以下的日志输出:
2023-10-10 12:34:56.789 DEBUG 12345 --- [nio-8080-exec-1] com.example.demo.LoggingAspect           : Method: ExampleController.exampleMethod
2023-10-10 12:34:56.789 DEBUG 12345 --- [nio-8080-exec-1] com.example.demo.LoggingAspect           : Request Param: param1
2023-10-10 12:34:56.789 DEBUG 12345 --- [nio-8080-exec-1] com.example.demo.LoggingAspect           : Request Param: param2
2023-10-10 12:34:56.789 DEBUG 12345 --- [nio-8080-exec-1] com.example.demo.LoggingAspect           : Method: ExampleController.exampleMethod
2023-10-10 12:34:56.789 DEBUG 12345 --- [nio-8080-exec-1] com.example.demo.LoggingAspect           : Response: ExampleResponse
  1. 进一步优化
    你可以根据需要进一步优化切面,例如:
  • 只记录特定注解标记的方法。

  • 记录异常信息。

  • 使用 @Around 注解来更灵活地控制方法的执行和日志记录。

通过这些步骤,你可以轻松地在 Spring Boot 3.1.12 中使用 AOP 实现日志打印,记录前端传入的参数和后端返回的数据。

http://www.lryc.cn/news/514003.html

相关文章:

  • Windows远程--如何使用IP访问服务器
  • vscode中设置默认格式化工具pretter
  • Hadoop、Flink、Spark和Kafka
  • APP自动化测试元素定位及隐式等待
  • Element plus 的 upload 组件实现自定义上传
  • 力扣-数据结构-10【算法学习day.81】
  • WPF的一些控件的触发事件记录
  • C# 设计模式(创建型模式):建造者模式
  • 关于模板函数的void返回值的判断:std::is_void与模板特化
  • 重现ORA-01555 细说Oracle Undo 数据管理
  • 通过blob请求后端导出文件
  • 养老院小程序怎么搭建?让老年人老有所养,老有所依!
  • 【2024美国数学建模AB题原文翻译】
  • 判断旗帜是否符合ISO新标准
  • 海量数据存储实现方案设计1-mycat版
  • Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)
  • hot100_238. 除自身以外数组的乘积
  • 软件测试基础详解
  • MySQL 备份方案设计之准备事项
  • 《计算机网络A》单选题-复习题库解析-最终
  • 向 SwiftUI 视图注入 managedObjectContext 环境变量导致 Xcode 预览(Preview)崩溃的解决
  • Ruby 数据类型
  • 复合机器人正以其高效、精准、灵活的特点,逐渐在汽车装配线上崭露头角
  • Docker + JMeter + InfluxDB + Grafana搭建压测可视化实时监控
  • leetcode 2658. 网格图中鱼的最大数目
  • Java 集合 Collection、List、Set
  • 报错:nginx [emerg] open() etcnginxnginx.conf failed (2 No such file or directory)
  • 基于AI的运维资源调度:效率与智能的双重提升
  • 自动化办公 | 根据成绩进行自动评级
  • 纯血鸿蒙ArkUI线性布局详解