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

springboot实现打印每个接口请求的出参和入参

前言

在工作中,在定位问题时经常需要查看每个接口的参数,虽然DEBUG也是个很好的方式,但是这种方式仅限于在本地开发过程中使用,在生产环境中大多数问题的定位都只能通过日志来解决,所以打印参数就显得尤为重要,以下方式使用spring 的 面向切面AOP实现在调用接口前和调用接口后打印出参和入参,只需要一个类既可,代码如下:

package com.bizzan.bitrade.aspect;import com.alibaba.fastjson.JSONObject;
import io.netty.util.internal.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
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.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;@Aspect
@Component
@Slf4j
public class LogAspect {@Pointcut("execution(public * com.bizzan.bitrade.controller.*.*(..))")public void requestAspect(){}@Before(value = "requestAspect()")public void methodBefore(JoinPoint joinPoint){ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();//打印请求内容log.info("请求地址:{},请求方式:{},请求类方法:{},请求类方法参数:{}" ,request.getRequestURL().toString(),request.getMethod(),joinPoint.getSignature(), Arrays.toString(joinPoint.getArgs()));}//在方法执行完结后打印返回内容@AfterReturning(returning = "o",pointcut = "requestAspect()")public void methodAfterReturing(Object o ){log.info("返回数据:{}" , JSONObject.toJSONString(o));}
}
http://www.dtcms.com/a/301661.html

相关文章:

  • SpringBoot配置文件详解
  • jangow-01-1.0.1靶机
  • Java 后端 Cookie Session Token会话跟踪技术
  • Maven之多模块项目管理
  • c# everthing.exe 通信
  • Level MC-9“恶地”
  • 1.qt历史版本安装与多版本开发(解决被拦截问题)
  • 青少年编程能力等级测评试卷及答案 Python编程(三级)
  • 《频率之光:共生之恋》
  • C9300L Stacking堆叠
  • 人形机器人指南(十)决策
  • 快速了解线性回归算法
  • Item16:成对使用new和delete时要采取相同形式
  • Sklearn 机器学习 数值指标 混淆矩阵confusion matrix
  • Java知识体系
  • 初识 docker [上]
  • 【高等数学】第六章 定积分的应用——第三节 定积分在物理学上的应用
  • GO语言 go get 下载 下来的包存放在哪里
  • 线程安全问题的发现与解决
  • 2025 DevOps开源工具全景指南:构建面向未来的智能交付体系
  • 嵌入式软件面试八股文
  • 面试150 数字范围按位与
  • PLLIP核
  • 测试老鸟整理,物流项目系统测试+测试点分析(一)
  • 【笔记】Gibbs自由能全微分公式推导
  • AJAX 原理_第一节_XHR 对象
  • 免安装MySQL启动全解:从解压到远程访问的保姆级教程
  • U盘中毒,文件被隐藏的解决方法
  • Redis6.0+安装教程(Linux)
  • Map系列