springboot-WebLogAspect用于记录请求和响应日志的实现方法
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容主要讲解"springboot-WebLogAspect用于记录请求和响应日志的实现方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"spring
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
软件开发公司客服部管理
有患者详细信息的肿瘤数据库
福建app软件开发有哪些公司
网络安全论坛 推荐
dream服务器建造全过程
业内较好的定制软件开发
网络安全危害事件案例
r710服务器u
戴尔2850服务器
星星知多少空岛服务器玩的是什么
罗布乐思怎么进入不了服务器
传趣网络技术有限公司怎么样
软件开发里程碑设置
方舟服务器名
江西通用软件开发性价比
软件开发demo 制作
南充软件开发服务价格
滁州证券软件开发
服务器主板在哪插入cpu
服务器文件更改安全权限设置
软件开发5年大概多少钱
dream服务器建造全过程
园区缴费软件开发团队
软件开发视频审核功能
随州专业的软件开发方案
服务器的安全举例
软件开发营业执照费用
连接虚拟机服务器
毛小孩儿(北京)网络技术
软件开发 免费简历模板