千家信息网

springboot-WebLogAspect用于记录请求和响应日志的实现方法

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"springboot-WebLogAspect用于记录请求和响应日志的实现方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"spring
千家信息网最后更新 2026年11月01日springboot-WebLogAspect用于记录请求和响应日志的实现方法

本篇内容主要讲解"springboot-WebLogAspect用于记录请求和响应日志的实现方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"springboot-WebLogAspect用于记录请求和响应日志的实现方法"吧!

  • 用途

    用于记录spring boot的请求和响应日志; aop实现;

  • 依赖

    1. lombok -如果没有,可以自已创建log对象

    2. Slf4j -

    3. jackson

    4. 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安全错误 数据库的锁怎样保障安全 互联网科技股 广东万易互联网科技有限公司惠州分公司 互联网科技公司经营范围 重庆互联网络科技 互联网金融公司科技 狮子座互联网科技 为想互联网科技 紫鲸互联网科技 上海喔噻互联网科技 兼蜜互联网科技 滨湖区互联网智能科技产品供应 中国最先进互联网科技公司 剑昆互联网络科技有限公司临桂 和信科技工业互联网 链环科技传统企业怎么转型互联网 996高科技互联网公司 美国互联网科技公司 信承诺互联网科技有限公司 互联网领先科技成果宣传视频 瑞安市蟠桃会互联网科技有限公司 上海挚品互联网科技有限公司 北京路客互联网科技有限公司 科技信息互联网 剑昆互联网络科技有限公司临桂 互联网科技和信息 健康食品互联网创新科技园项目 威龙国际互联网科技公司 互联网时代的科技公司 北京互联网科技类企业分布 互联网科技创新方面的资料
0