Spring Boot2.0之统一处理web请求日志

Spring Boot 请求处理:技术细节与优化策略 在当今互联网时代,应用程序的性能和响应速度是决定用户体验和业务成功的关键因素。随着用户基数的不断增长和业务复杂性的提升,如何高效、稳定地处理大量请求成为了一个重要的技术挑战。Spring Boot 作为一个现代化的 Java 框架,凭借其简洁的配置、强大的生态系统和丰富的功能,成为了构建高性能、高可用性 Web 应用的首选工具之一。 阅读详情

Spring Boot2.0之统一处理web请求日志

试问,你的项目中,如果有几万个方法,你还这么写log.info("name"+name+",age"+age )日志么?low~ 

    所以用AOP呀

1、首先创建个aop的包(aop的依赖jar包要在pom中搞定),把下面类,贴进去:

 

package com.toov5.aop;

import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

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;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

@Aspect
@Component
public class WebLogAspect {

    private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);

    @Pointcut("execution(public * com.itmayiedu.controller.*.*(..))")
    public void webLog() {
    }

    @Before("webLog()")
    public void doBefore(JoinPoint joinPoint) throws Throwable {
        // 接收到请求,记录请求内容
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = attributes.getRequest();
        // 记录下请求内容
        logger.info("URL : " + request.getRequestURL().toString());
        logger.info("HTTP_METHOD : " + request.getMethod());
        logger.info("IP : " + request.getRemoteAddr());
        Enumeration<String> enu = request.getParameterNames();
        while (enu.hasMoreElements()) {
            String name = (String) enu.nextElement();
            logger.info("name:{},value:{}", name, request.getParameter(name));
        }
    }

    @AfterReturning(returning = "ret", pointcut = "webLog()")
    public void doAfterReturning(Object ret) throws Throwable {
        // 处理完请求,返回内容
        logger.info("RESPONSE : " + ret);
    }
}

 

2、后端业务逻辑代码:

  

package com.toov5.ErrorCatch;


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.extern.slf4j.Slf4j;



@RestController //以后经常做微服务异常捕获,要经常用到这个注解
@Slf4j
public class ErrorCatch {
    
    @RequestMapping("/getUser")
    public String getUser(int i ){
        int j = 1/i;    
        log.info("成功哈");
        return "返回"+j;
    }
    @RequestMapping("/getMember")
    public String getMember(String name, Integer age){
//        log.info("name"+name+",age"+age );//如果几万个方法都要写这个么? 所以用aop去统一处理
        return "okokok";
    }
    
    
}

 

3、启动类我做了一个小修改哈:

   

扩大了一下扫描范围

 

现在整个项目的目录结构是这样的:

 

 启动,请求:

 

 

 

 

可以看到控制台:

 

 

 小伙伴是不是很简单啊~

 后面会介绍:分布式日志收集系统,也是分布式解决方案的一种~有兴趣有的小伙伴可以自己看下

 

spring Boot 日志管理--使用AOP统一处理Web请求日志 导语   AOP (Aspects Oriented Programming)面向切面编程,通过预编译的方式和运行期动态代理实现程序功能的统一维护。AOP作为Spring 框架中的一个重要的内容,通过对既有程序定义一个切点,然后再起前后切入不同的执行内容的方式来实现一些拓展性的操作。例如,打开/关闭数据库连接、打开/关闭事务、记录日志等等。   AOP不会破坏原有逻辑,所以它可以很好的对业务逻辑各个部件之间进行隔离,从而降低了各个部件之间的耦合度,这个在开发中是非常重要的,同时提高了程序的可重用性,同时提. 阅读详情

相关推荐

本地化动漫视频剪辑与自动化处理工具链实践

视频处理技术是现代多媒体应用的核心基础,通过FFmpeg等开源工具实现音视频文件的解码、编码和编辑。其原理涉及数字信号处理、编解码算法和计算机图形学,能够显著提升内容创作效率。在工程实践中,本地化处理方案避免了云端服务的隐私风险,特别适合动漫reaction视频制作等场景。语音识别技术结合视频处理,可实现自动字幕生成,而批量任务队列管理则解决了多集内容的效率瓶颈。本文以鬼灭之刃为例,演示了从视频下载、智能切片到字幕生成的全流程本地化实现方案。

WGH100817的博客 427

SpringBoot-Web-日志

一、日志的作用 日志记录是一个应用程序必不可少的一部分,线上问题追踪,基于日志的业务逻辑统计分析等都离不开日志。 二、日志的分类 日志分为日志门面(日志的抽象层)和日志实现 日志门面本身并无日志的实现,只是定义了一套日志接口 日志实现是具体的日志实现方案 日志门面和日志实现可以简单的理解为接口与接口的实现,调用这只需要关注接口而无需关注具体的实现,做到解耦。 1. 日志门面 目前,日志的门面分为SLF4J 和 Commons-Logging两大阵营阵营 ...

qk 557

Springboot统一web请求日志

Springboot统一web请求日志Springboot统一web请求日志Springboot统一web请求日志

Spring Boot AOP 扫盲,实现接口访问的统一日志记录

AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层添加一个切面来实现接口访问的统一日志记录。 一、关于 AOP AOP,也就是 Aspect-oriented Programming,译为面向切面编程,是计算机科学中的一个设计思想,旨在通过切面技术为业务主体增加额外的通知(Advice),从而对声明为“切点”(Pointcut)的代码块进行统一管理和装饰。 这

沉默王二 7510

三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)

三维旋转引言三维旋转1)欧拉角2)轴角式旋转分解1)V||的旋转2)V⊥的旋转3)V的整体旋转 引言 前面我们了解了 复数在二维旋转中的作用与联系 而四元数与三维旋转之间的关系与复数对二维旋转有很多类似的地方,下面我们就先来详细了解一下三维旋转的过程。 三维旋转 首先讨论一下三维旋转,我们了解到常用的三维旋转有两种方式: 1)欧拉角 即按照一定的顺序,分别对X, Y, Z三个轴进行旋转 θ 角。绕各旋转轴的旋转矩阵为: 然后任意的三维旋转可以分解成上述三种旋转方式的组合。(注意:三个旋转的顺序是非常重要的

晓晨的博客 1万+

3GPP Release与UE Category:无线通信标准演进与终端能力分级全解析

在蜂窝移动通信领域,技术标准的演进与终端设备的能力分级是理解整个产业发展的核心框架。其基本原理由国际标准组织3GPP通过周期性发布的技术规范版本(Release)来定义,每个Release都像一份阶段性的技术蓝图,规定了网络与终端应支持的新功能与性能基线。这种标准化机制的技术价值在于确保了全球设备的互联互通与网络的平滑升级,为从4G LTE到5G NR乃至未来的演进提供了清晰路径。在这一框架下,终端能力分级(如LTE时代的UE Category)是将标准转化为具体设备性能的关键环节,它直接定义了终端在射频和

weixin_34098209的博客 331

SpringBoot2.0 使用AOP统一处理Web请求日志(完整版)

一,加入依赖 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-boot-starter-aop&amp;lt;/artifactId&amp;g

飞奔的波大爷的博客 1万+

SDM量化噪声等效到PLL输出的传递函数推导

在历年文章或书本中少见SDM量化噪声等效到PLL输出的传递函数推导。需了解SDM量化噪声的本质,配合欧拉方程简化,并将Z域转化成S域。最终结合断环处等效到PLL输出的传递函数,方可完成。

u010486560的博客 1407

spring boot 使用AOP统一处理Web请求日志

AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接、打开事务/关闭事务、记录日志等。基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各

ForeverLove的博客 695

利用R批量计算相关系数

批量求相关系数

weixin_52073820的博客 1458

Android SurfaceFlinger——概述(一)

对于系统渲染流程的理解是指导 SurfaceFlinger 设计的核心思想,从 Android 4.1 一直到 Android 9.0 都没有太大的变化。只要抓住这五个核心思想,我们阅读 SurfaceFlinger 的难度就会下降不少。下面看一下 SurfaceFlinger 的体系和 Skia 以及 View的绘制流程的关系。framework 面向开发者所有的 View 是便于开发的控件,里面仅仅只是提供了当前 View 各种属性以及功能。

小旭的专栏 2584

AOP切面统一打印请求日志

AOP切面统一打印请求日志 日志输出效果 打印的参数: URL: 请求接口地址; HTTP Method: 请求的方法,是 POST, GET, 还是 DELETE 等; Class Method: 对应 Controller 的全路径以及调用的哪个方法; IP: 请求 IP 地址; Request Args: 请求入参,以 JSON 格式输出; Response Args: 响应出参,以 JSON 格式输出; Time-Consuming: 请求耗时; 添加依赖 <!-- aop 依赖 --&

CharleneD的博客 2102

【RT-DETR涨点改进】全网独家首发、特征融合改进篇 | AAAI 2026 | 引入CDEM交叉动态增强模块,双向引导和融合,在低光图像增强中有效提升了图像的亮度,提升小目标和暗目标的检测准确率

本文提出了一种基于CDEM(交叉动态增强模块)改进的rtdetr网络模型,有效提升了在低光和复杂环境下的目标检测性能。CDEM模块通过动态增强亮度与色彩特征,改善图像输入质量,增强细节和对比度。该模块具有轻量级结构,易于集成到现有模型中,能够显著提升小目标和暗目标的检测准确率与鲁棒性。文章详细介绍了CDEM模块的结构原理、实现方法,并提供了完整的代码实现和配置指南,包括三种改进版本的YAML配置文件。实验结果表明,该方法在图像增强和目标检测任务中均取得了优异性能。

Ai缝合怪、助力小伙伴高效发论文 144

Spring Boot 3.x Rest API统一异常处理最佳实践

在Spring MVC应用中,要对web表示层所抛出的异常进行捕获处理有多种方式,具体的可参考著名国外Spring技术实战网站baeldung上的相关话题。Spring Boot对Spring MVC应用中抛出的异常以及http错误的捕获处理流程做了统一的封装,最终以特定的`json`结构响应给前端,而我们要做的只是扩展它对json结果的包装方式,以我们想要的结构返回即可。

felix_alone2012的博客 3015

【异常】Cursor IDE 扩展主机超时错误处理文档The agent execution provider did not respond within 4 seconds.

该错误通常是 Cursor IDE 的临时性问题,不影响项目代码。大多数情况下,重新加载窗口或重启 IDE 即可解决。如果问题持续,可按上述进阶方案排查。重新加载窗口(最快)重启 IDE检查系统资源清理缓存检查扩展更多关于 AI+教育领域的干货,可以关注我的微信公众号第一时间获取哦~

奶爸的编程之路,也就一周冷个三天 2700

在时间轴上联动多张内表:ABAP 的 PROVIDE ... ENDPROVIDE 区间联动迭代实战

PROVIDE 是 ABAP 中处理有效期区间数据的强大工具,它能自动将多张内表按时间维度切片并联合处理。其核心功能包括:指定区间边界字段(BOUNDS),定义外部总区间(BETWEEN),并通过工作区和标志位(VALID)标识每张表在当前子区间是否生效。该语法特别适合 HR 信息类型等有效期数据,能避免手动处理区间重叠、排序和空档等问题。使用时需注意字段投影(FIELDS)限制、工作区只读原则,以及异常处理(如区间重叠或未排序)。典型应用场景包括员工调岗记录、价格有效期管理等需要时间轴联动的业务逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1671

Spring Boot 2.0 教程 | AOP 切面统一打印请求日志

欢迎关注微信公众号: 小哈学Java 文章首发于个人网站 https://www.exception.site/springboot/spring-boot-aop-web-request 本节中,您将学习如何在 Spring Boot 中使用 AOP 切面统一处理请求日志,打印进出参相关参数。 一、先看看日志输出效果 可以看到,每个对于每个请求,开始与结束一目了然,并且打印了以下参数: ...

犬小哈 991

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Spring Boot 3.x Filter实战:记录请求日志

前面我们在《Spring Boot 3.x Rest API最佳实践之统一响应结构》中学习响应的统一拦截处理,顺带完成了响应结果的记录;而对于请求内容咱们也必须进行日志记录,以确保排查问题时有据可循。为此,本小节咱们利用filter组件来实现这一需求。如果觉得对你有帮助,记得点赞收藏,关注小卷,后续更精彩!

felix_alone2012的博客 1713

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

spring boot使用AOP统一处理web请求

为了保证服务的高可用,及时发现问题,迅速解决问题,为应用添加log是必不可少的。 但是随着项目的增大,方法增多,每个方法加单独加日志处理会有很多冗余 那在SpringBoot项目中如何统一的处理Web请求日志? 基本思想:   采用AOP的方式,拦截请求,写入日志 AOP 是面向切面的编程,就是在运行期通过动态代理的方式对代码进行增强处理 基于AOP不会破坏原来程序逻辑,因此...

aituochang1886的博客 184

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【转载】Spring Boot 2.0 教程 | AOP 切面统一打印请求日志

本节中,您将学习如何在 Spring Boot 2.0 中使用 AOP 切面统一处理请求日志,打印进出参相关参数。 一、先看看日志输出效果 Spring Boot AOP 打印日志 可以看到,每个对于每个请求,开始与结束一目了然,并且打印了以下参数: URL: 请求接口地址; HTTP Method: 请求的方法,是 POST, GET, 还是 DELETE 等; Class Method: 对应 Controller 的全路径以及调用的哪个方法; IP: 请求 IP 地址; Request Args:

qq_41959009的博客 316

Spring Boot中使用AOP统一处理Web请求日志

1,引入jar <!-- springboot-aop 技术,统一处理日志记录--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId&gt...

weixin_33836874的博客 142

Spring Boot 2.0 AOP 切面统一打印请求日志

一、先看看日志输出效果 可以看到,每个对于每个请求,开始与结束一目了然,并且打印了以下参数: URL: 请求接口地址; HTTP Method: 请求的方法,是POST,GET, 还是DELETE等; Class Method: 对应 Controller 的全路径以及调用的哪个方法; IP: 请求 IP 地址; Request Args: 请求入参,以 JSON 格式输出; Response Args: 响应出参,以 JSON 格式输出; Time-Consuming: 请求耗...

qq_23000805的博客 982

Spring Boot使用AOP搭建统一处理请求日志和使用log4j记录不同级别的日志

受http://blog.didispace.com/springbootaoplog/启发,今天给Spring Boot项目搭建了统一处理请求日志的切面并引入log4j记录不同层级日志。 mark一下这个过程,以及原文中没有涉及到的一些疑问 一.  新增要使用的依赖  &lt;!--日志--&gt; &lt;dependency&gt; &lt;groupId&gt;log4j&lt...

sinat_29108239的博客 746

Spring Boot日志

本文主要写了spring项目中日志的配置信息和一些知识点;

2202_76101487的博客 2271
上一篇: Spring Boot2.0之整合log4j
下一篇: Spring Boot2.0之@Async实现异步调用
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值