Spring Boot - 开启log-request-details详细记录调测Controller接口

news2024/9/22 9:38:19

文章目录

  • 概述
  • 实现详细日志输出
    • 1. 调整日志级别
    • 2. 示例接口
    • 3. 启用请求详细信息日志
  • 注意事项

在这里插入图片描述


概述

在Spring Boot项目中,调试Controller接口的请求和响应信息可以极大地帮助开发人员排查问题并确保应用程序的安全性和性能。

实现详细日志输出

1. 调整日志级别

application.yml中,通过配置日志级别,可以控制输出的详细程度。对于HTTP请求和响应,可以设置为TRACE级别,以捕获详细信息:

logging:
  level:
    web: TRACE

此配置确保所有请求和响应细节都会被记录,包括请求参数、头信息、和响应状态等。


2. 示例接口

以下是一个简单的Spring Boot接口示例,它会响应GET请求并返回自定义的响应头信息:

@GetMapping("/index")
public Object index(Long id, String kw) {
    // 自定义响应header
    HttpHeaders headers = new HttpHeaders();
    headers.add("x-version", "1.0.0");
    ResponseEntity<Object> response = new ResponseEntity<Object>(
        String.format("【id = %d, kw = %s】", id, kw), 
        headers, 
        HttpStatusCode.valueOf(200)
    );
    return response;
}

此接口接受两个参数idkw,并返回一个包含这些参数的字符串以及自定义头信息的响应。

2024-08-09 17:29:09.606 TRACE 23564 --- [nio-7777-exec-3] o.s.web.servlet.DispatcherServlet        : GET "/index?id=1&kw=artisan", parameters={masked}, headers={masked} in DispatcherServlet 'dispatcherServlet'
2024-08-09 17:29:09.606 TRACE 23564 --- [nio-7777-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.artisan.controller.ArtisanController#index(Long, String)
2024-08-09 17:29:09.608 TRACE 23564 --- [nio-7777-exec-3] o.s.web.method.HandlerMethod             : Arguments: [1, artisan]
2024-08-09 17:29:09.611 DEBUG 23564 --- [nio-7777-exec-3] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, application/signed-exchange;v=b3;q=0.7, */*;q=0.8] and supported [text/plain, */*, text/plain, */*, application/json, application/*+json, application/json, application/*+json]
2024-08-09 17:29:09.611 TRACE 23564 --- [nio-7777-exec-3] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing ["【id = 1, kw = artisan】"]
2024-08-09 17:29:09.611 TRACE 23564 --- [nio-7777-exec-3] s.w.s.m.m.a.RequestMappingHandlerAdapter : Applying default cacheSeconds=-1
2024-08-09 17:29:09.611 TRACE 23564 --- [nio-7777-exec-3] o.s.web.servlet.DispatcherServlet        : No view rendering, null ModelAndView returned.
2024-08-09 17:29:09.611 DEBUG 23564 --- [nio-7777-exec-3] o.s.web.servlet.DispatcherServlet        : Completed 200 OK, headers={masked}



3. 启用请求详细信息日志

为了确保在开发和测试环境中能看到详细的请求信息,可以在application.yml中设置以下配置:

spring:
  mvc:
    log-request-details: true

此配置将启用详细的请求和响应日志输出,包括请求体、响应体、以及头信息等。

2024-08-09 18:10:58.126 TRACE 24176 --- [nio-7777-exec-1] o.s.web.servlet.DispatcherServlet        : GET "/index?id=1&kw=artisan", parameters={id:[1], kw:[artisan]}, headers={host:[localhost:7777], connection:[keep-alive], cache-control:[max-age=0], sec-ch-ua:["Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"], sec-ch-ua-mobile:[?0], sec-ch-ua-platform:["Windows"], dnt:[1], upgrade-insecure-requests:[1], user-agent:[Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36], accept:[text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7], sec-fetch-site:[none], sec-fetch-mode:[navigate], sec-fetch-user:[?1], sec-fetch-dest:[document], accept-encoding:[gzip, deflate, br, zstd], accept-language:[zh-CN,zh;q=0.9], cookie:[SL_G_WPT_TO=en; SL_GWPT_Show_Hide_tmp=undefined; SL_wptGlobTipTmp=undefined]} in DispatcherServlet 'dispatcherServlet'
2024-08-09 18:10:58.130 TRACE 24176 --- [nio-7777-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.artisan.controller.ArtisanController#index(Long, String)
2024-08-09 18:10:58.155 TRACE 24176 --- [nio-7777-exec-1] o.s.web.method.HandlerMethod             : Arguments: [1, artisan]
2024-08-09 18:10:58.177 DEBUG 24176 --- [nio-7777-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'text/html', given [text/html, application/xhtml+xml, image/avif, image/webp, image/apng, application/xml;q=0.9, application/signed-exchange;v=b3;q=0.7, */*;q=0.8] and supported [text/plain, */*, text/plain, */*, application/json, application/*+json, application/json, application/*+json]
2024-08-09 18:10:58.178 TRACE 24176 --- [nio-7777-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing ["【id = 1, kw = artisan】"]
2024-08-09 18:10:58.190 TRACE 24176 --- [nio-7777-exec-1] s.w.s.m.m.a.RequestMappingHandlerAdapter : Applying default cacheSeconds=-1
2024-08-09 18:10:58.190 TRACE 24176 --- [nio-7777-exec-1] o.s.web.servlet.DispatcherServlet        : No view rendering, null ModelAndView returned.
2024-08-09 18:10:58.191 DEBUG 24176 --- [nio-7777-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 200 OK, headers={x-version:[1.0.0], Content-Type:[text/html;charset=UTF-8], Content-Length:[26], Date:[Fri, 09 Aug 2024 10:10:58 GMT], Keep-Alive:[timeout=60], Connection:[keep-alive]}



注意事项

  • 安全性:在生产环境中,应避免输出过于详细的日志,尤其是可能包含敏感信息的日志,以防止潜在的安全风险。
  • 性能影响:详细的日志输出可能会对性能产生影响,特别是在高并发的环境下。因此,在生产环境中应慎重使用。
  • 日志管理:对于详细日志,应确保有合适的日志管理策略,以便于归档和分析,同时防止磁盘空间被占满。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1997168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在LabVIEW中高效读取大型CSV文件的方法

当尝试使用“读取分隔的电子表格VI”从大型CSV文件&#xff08;数百MB&#xff09;中读取数据时&#xff0c;可能会遇到内存已满错误。这是因为该VI会一次性读取整个文件并将其转换为数值数组&#xff0c;导致占用大量内存。 解决方案 可以使用“从文本文件VI读取”来部分读取…

Acrel-1000DP分布式光伏监控系统在光伏并网系统的实际应用分析-安科瑞 蒋静

摘要&#xff1a;为实现“双碳目标”即中国明确提出的2030年“碳达峰”与2060年“碳中和”目标。推动节能减排、实现经济可持续发展&#xff0c;我国采取了一系列方案和行动。其中就包括能源绿色低碳转型行动&#xff1a;大力发展新能源&#xff0c;‌推动煤电节能降碳&#xf…

golang 条件语句中有多条件时多条件的执行顺序和执行效率问题总结 -- if else条件语句 多条件时执行顺序为从左到右

在golang的 条件语句中有多个执行条件时&#xff0c;go的执行顺序为从左到右依次执行&#xff0c; 如果多个条件是 && 条件与的关系&#xff0c;则执行条件的顺序就与程序的效率密切相关&#xff0c; if else 的多个条件示例&#xff1a; func TestOrderTest(t *testi…

监听器——监听着我们WEB项目中的域对象

监听器 ——它监听着我们WEB项目中的域对象 何时被创建被销毁 ServlertContextListener——它监听ServletContext对象的创建和销毁 contextInitialized 创建的时候会调用 Tomcat启动时调用 contextDestroyed销毁的时候自动会调用的方法 Tomcat终止 这两个方法中携带的参数S…

C# Unity 面向对象补全计划 七大原则 之 迪米特法则(Law Of Demeter )难度:☆☆☆ 总结:直取蜀汉

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;查漏补缺 1.迪米特法则&#xff08;…

hue无法执行批处理作业解决方案

在执行批处理作业的时候&#xff0c;报作业为FAILED状态 查看执行的过程中发现&#xff1a;oozie的问题。 提示hdfs的/user/oozie/share/lib目录不存在&#xff0c;原因是因为没有安装oozie的共享库 解决方案&#xff1a; 点击oozie角色&#xff0c;操作中点击安装oozie共享库…

使用pycharm下载requests库时出现Error loading package list:Connect timed out

问题&#xff1a; 这个问题可能是由于网络连接不稳定导致的。您可以尝试以下方法来解决&#xff1a; 检查您的网络连接是否正常&#xff0c;尝试重新连接并重试。 检查您的防火墙设置&#xff0c;确保允许PyCharm访问Internet。 尝试更改PyCharm的HTTP代理设置&#xff0c;…

【C语言篇】字符和字符串以及内存函数详细介绍与模拟实现(下篇)

文章目录 前言字符串函数strstr的使用和模拟实现strtok函数的使用strerror函数的使用 内存函数memcpy使用和模拟实现memmove使用和模拟实现memset函数的使用memcmp函数的使用 前言 本篇接上一篇&#xff1a; 字符和字符串以及内存函数详细介绍&#xff08;上篇&#xff09; 字…

WPF参考做的TextBox圆角,并且水印文字操作

1.首先进行 转换器操作&#xff08;获取当前Textbox Text是否为空或者空格&#xff09; / // <summary>/// 非空验证转换器/// </summary>#region String IsNullOrEmptypublic class IsNullOrEmptyConverter : IValueConverter{public object Convert(object valu…

Linux云计算 |【第二阶段】NETWORK-DAY4

主要内容&#xff1a; NAT 原理与配置&#xff08;私有IP地址、静态NAT转换、Easy IP&#xff09;、VRRP解析&#xff08;主路由器、备份路由器、虚拟路由器、优先级&#xff09; 一、NAT概述 NAT 网络地址转换&#xff08;Network Address Translation&#xff09;是一种网络…

提高PDF电子书的分辨率

解决方法出处 1. 安装ImageMagick brew install imagemagick brew install ghostscript2. 按流程进行 convert -density 600 your_pdf_filename.pdf output-%02d.jpg convert output*.jpg -normalize -threshold 80% final-%02d.jpg convert final*.jpg my_new_highcontras…

MySQL | 行锁——记录锁、间隙锁 、临键锁、插入意向锁

1、InnoDB中的行锁 行锁&#xff08;Row Lock&#xff09; 也称为记录锁&#xff0c;顾名思义&#xff0c;就是锁住某一行&#xff08;某条记录row&#xff09;。需要注意的是&#xff0c;MySQL服务器层并没有实现行锁机制&#xff0c;行级锁只在存储引擎层实现。 优点&#x…

秒懂Linux之进程调度与切换

目录 一.进程的切换 二.进程的调度 基本走向 调度算法 一.进程的切换 进程在运行的时候并非是放在cpu上让其全部跑完&#xff0c;而是基于时间片&#xff08;比如每1ms就切换一个进程&#xff09;进行轮转进行的~ 竞争性: 系统进程数目众多&#xff0c;而CPU资源只有少量&…

解决端口号被占用问题

第一种&#xff1a; 最简单有效的方法&#xff0c;重启一下电脑&#xff0c;占用此端口的程序就会释放端口。 第二种&#xff1a; 使用命令找到占用端口的程序&#xff0c;把它关闭。 1、打开运行窗口输入&#xff1a;CMD &#xff0c;进入命令窗口。 2、输入&#xff1a;n…

【Mind+】 掌控板入门教程09 魔法之光

光是地球生命的来源&#xff0c;是人类生活的依据&#xff0c;更是人类认识外部世界的工具。在科技发达的今天&#xff0c;我们可以通过传感器来检测光&#xff0c;利用光帮助我们更好的生活。 今天就让我们一起通过几个小项目来感受光的魔法吧。 项目示例 掌控板…

基于vue框架的《程序设计》在线学习平台的设计与实现adl42(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;学生,教师,课程信息,课程类型,班级,课程文件,学生选课,移除选课,课程作业,作业提交,作业批改 开题报告内容 基于Vue框架的《程序设计》在线学习平台的设计与实现——开题报告 一、选题背景与意义 1. 选题背景 随着互联网技术的不断发…

数据库事务的四大特性ACID

数据库事务的四大特性ACID 数据库事务&#xff08;Transaction&#xff09;是数据库管理系统&#xff08;DBMS&#xff09;执行过程中的一个逻辑单位&#xff0c;由一个或多个SQL语句组成&#xff0c;这些语句作为一个整体一起向系统提交&#xff0c;要么全部执行&#xff0c;…

MP4 H.264 MPEG-4 MPEG-2

MP4 视频编解码技术 H.264 MPEG-4 MPEG-2 MP4 (MPEG-4 Part 14): Format: A digital multimedia container format.Use: Often used to store video, audio, subtitles, and still images.Compression: Can use different codecs, such as H.264, for video compression. H.264…

linux中的库的概念、动态库与静态库

1.为什么引用库 准备头文件、源文件和主程序文件 g 将源程序进行联合编译生成可执行出程序 ./exec执行可执行程序 在上述案例中&#xff0c;主程序要是有的源程序代码&#xff0c;在add.cpp中&#xff0c;如果项目结束后&#xff0c;到了交付阶段&#xff0c;由于主程序的生…

WPF篇(13)-ScrollViewer控件+ScrollBar滚动条+Slider滑动条

ScrollViewer控件 如果某个控件的尺寸太大&#xff0c;当前界面无法全部显示&#xff0c;则可以将这个控件包含在ScrollViewer中&#xff0c;因为ScrollViewer控件封装了一个水平滚动条ScrollBar和一个垂直滚动条ScrollBar&#xff0c;所以&#xff0c;ScrollViewer就是一个包…