springboot-WebLogAspect用于记录请求和响应日志的实现方法
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"springboot-WebLogAspect用于记录请求和响应日志的实现方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"spring
千家信息网最后更新 2025年12月02日springboot-WebLogAspect用于记录请求和响应日志的实现方法
本篇内容主要讲解"springboot-WebLogAspect用于记录请求和响应日志的实现方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot-WebLogAspect用于记录请求和响应日志的实现方法"吧!
用途
用于记录spring boot的请求和响应日志; aop实现;
依赖
lombok -如果没有,可以自已创建log对象
Slf4j -
jackson
apache common
实现
package xxx.xxx.xxx;import com.fasterxml.jackson.databind.ObjectMapper;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.*;import org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint;import org.springframework.stereotype.Component;import org.springframework.web.context.request.RequestAttributes;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest;/** * 用于记录web请求/响应日志 */@Component@Aspect@Slf4jpublic class WebLogAspect { /** * 切面, xxx.xxx.xxx.web.ctl是Controller包名 */ @Pointcut("execution(* xxx.xxx.xxx.web.ctl..*.*(..))") private void parameterPointCut() { } /** * 方法执行前,记录请求 * @param joinPoint */ @Before("parameterPointCut()") public void requestLog(JoinPoint joinPoint){ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();//这个RequestContextHolder是Springmvc提供来获得请求的东西 HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest(); String queryStr = request.getQueryString(); if(StringUtils.isNotEmpty(queryStr)){ log.info("请求地址: [{}] {}", request.getMethod(), request.getRequestURI()); }else{ log.info("请求地址: [{}] {}?{} ", request.getMethod(), request.getRequestURI(), queryStr); } printRequestArgs(joinPoint); } private void printRequestArgs(JoinPoint joinPoint){ log.info("请求方法: {}", joinPoint.toString()); Object[] reqArgs = joinPoint.getArgs(); if(null == reqArgs){ return; } int c = 0; ObjectMapper mapper = new ObjectMapper(); for(Object arg: reqArgs){ try{ log.info("请求入参[{}]: {}", c, mapper.writeValueAsString(arg)); }catch (Exception ex){ log.error("请求入参转换异常", ex); } c++; } } /** * 方法执行后,记录响应 * @param joinPoint * @param ret 方法执行结果注入对象 * @return */ @AfterReturning(returning = "ret",pointcut = "parameterPointCut()") public Object responeLog(JoinPoint joinPoint, Object ret){ try { ObjectMapper mapper = new ObjectMapper(); log.info("响应出参: {}", mapper.writeValueAsString(ret)); } catch (Throwable ex) { log.error("响应异常", ex); } return ret; }}到此,相信大家对"springboot-WebLogAspect用于记录请求和响应日志的实现方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
日志
内容
地址
对象
学习
实用
更深
东西
兴趣
切面
实用性
实际
操作简单
更多
朋友
用途
结果
网站
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
维护网络安全开头
套餐买数据库知网安全吗
恐鬼症为啥服务器大厅进不去
医疗行业网络安全保护
烟台的医疗软件开发公司
党校网络安全工作责任制实施细则
关系型数据库论文
手机开启云服务器
连接数据库dos命令
cf服务器连接失败
数据库是附加还是还原
网络技术常用几种命令
数据库进行安全防护
全国卫健系统网络安全大赛
软件开发方法原型法常用吗
酷狗直播用什么软件开发的
工商银行合肥分行软件开发
网络安全五个确保
rust 数据库实现
网络安全十大准则
计算机网络技术招聘大专
元神玩家攻击晋江服务器
汉寿服务器
iee数据库
苹果电脑连接服务器
数据库安全课件
软件开发计算机编程赚钱么
数据库在备份是可以操作吗
绿色上网共建网络安全内容
电脑中什么不是数据库系统的特点