当前位置: 首页 > news >正文

SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出

文章目录

  • 1. 简介
    • 依赖管理
  • 2. 实战案例
    • 2.1 基本用法
    • 2.2 结合Logback日志记录到文件
    • 2.3 自定义核心类Logbook
    • 2.4 自定义日志输出Sink
    • 2.5 与RestTemplate集成

1. 简介

记录HTTP API请求响应日志对于监控、调试和性能优化至关重要。它帮助开发者追踪API的使用情况,包括请求来源、参数、响应状态码及耗时等,从而快速定位问题、分析用户行为及评估系统性能。在生产环境中,合理的日志记录策略能及时发现并预警潜在问题,减少故障影响。

在本篇文章中 我将介绍一款非常强大的Logbook库,它可为不同的客户端和服务器端技术提供完整的请求和响应日志。它允许开发人员记录应用程序接收或发送的任何 HTTP 流量。这可用于日志分析、审计或调查流量问题。

Logbook实用非常的简单,它针对spring boot提供了starter,根据你当前spring boot使用的版本引入不同版本的Logbook即可。

依赖管理

<properties><!--如果你使用的springboot2.x版本请引入2.16.0版本--><logbook.version>2.16.0</logbook.version><!--如果你使用的springboot3.x版本请引入3.9.0版本--><logbook.version>3.9.0</logbook.version>
</properties>
<dependency><groupId>org.zalando</groupId><artifactId>logbook-spring-boot-starter</artifactId><version>${logbook.version}</version>
</dependency>

注意:上面使用的版本说明。

2. 实战案例

根据上面,引入了相关的依赖后,还需要进行如下的配置

logging:level:org.zalando.logbook.Logbook: TRACE

调整Logbook日志级别为TRACE。

2.1 基本用法

根据上面配置的日志级别,接下来你可以不用做任何的配置,随意访问一个接口就能在控制台看到非常详细的信息

// 接口
@GetMapping("/hello")public String Hello(){return "hello";}

访问上面的接口,控制台输出如下:
在这里插入图片描述
这里看到了详细的请求/响应信息。

输出格式配置

以上日志是以json格式输出,也是默认格式,它还支持:httpcurlsplunk格式。
比如我们设置成如

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 卫生间装修防滑石用瓷砖还是大理石好呢?
  • 算法知识点————背包问题
  • 时间序列预测学习方向总概括
  • Python基础语法(1)
  • 已知两圆的圆心半径,求交点坐标——CAD VBA 解决
  • 1-【JavaWeb】数据库基础
  • 生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute
  • java中redis集群模式和哨兵模式的区别和联系?
  • Java:动态代理
  • CSP-CCF★★★201812-2小明放学★★★
  • Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】
  • ABAP JSON处理应用
  • CKAD-CronJob
  • 伟易特发布全新一代便携式反无人机装备
  • Vue组件:动态组件、缓存组件、异步组件
  • [译]前端离线指南(上)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Druid 在有赞的实践
  • iOS 系统授权开发
  • JavaScript对象详解
  • Java多线程(4):使用线程池执行定时任务
  • js学习笔记
  • js作用域和this的理解
  • laravel5.5 视图共享数据
  • miaov-React 最佳入门
  • Netty源码解析1-Buffer
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Swoft 源码剖析 - 代码自动更新机制
  • 测试如何在敏捷团队中工作?
  • 大型网站性能监测、分析与优化常见问题QA
  • 读懂package.json -- 依赖管理
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端设计模式
  • 如何在 Tornado 中实现 Middleware
  • 我的面试准备过程--容器(更新中)
  • 硬币翻转问题,区间操作
  • 在Unity中实现一个简单的消息管理器
  • HanLP分词命名实体提取详解
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #APPINVENTOR学习记录
  • #Ubuntu(修改root信息)
  • $().each和$.each的区别
  • (LeetCode) T14. Longest Common Prefix
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)http协议
  • (转)原始图像数据和PDF中的图像数据
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • *1 计算机基础和操作系统基础及几大协议