SpringBoot 如何快速过滤出一次请求的所有日志

在现网出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位 。如果请求只在一个线程里处理,则我们可以通过线程ID来过滤 日志 ,但如果请求包含异步线程的处理,那么光靠线程ID就显得捉襟见肘了。

SLF4J日志框架提供了一个MDC(Mapped Diagnostic Contexts)工具类,谷歌翻译为映射的诊断上下文 ,从字面上很难理解,我们可以先实战一把。

public class Main {    private static final String KEY = "requestId";
    private static final Logger logger = LoggerFactory.getLogger(Main.class);
    
    public static void main(String[] args) {        // 入口传入请求ID
        MDC.put(KEY, UUID.randomUUID().toString());
        
        // 打印日志
        logger.debug("log in main thread 1");
        logger.debug("log in main thread 2");
        logger.debug("log in main thread 3");        // 出口移除请求ID
        MDC.remove(KEY);    }}

我们在main函数的入口调用MDC.put()方法传入请求ID,在出口调用MDC.remove()方法移除请求ID。配置好log4j2.xml

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

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

相关文章

算法打卡day13|二叉树篇02|Leetcode 102.二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树

在做题之前说明 Deque和Queue 在Java中,Deque和Queue是两种不同的数据结构接口,它们都继承自Collection接口;Deque是Queue的超集,提供了更多的操作和灵活性,以下它们之间存在一些关键的区别: 操作范围&…

【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug

文章目录 前言 时间阈值断点 信号阈值断点 周期步进 Signal Value Lable Data Inspector 分析和应用 总结 前言 近期在一些研发项目中使用Matlab/Simulink时,遇到了挺多费时费力的事情。所以利用晚上和周末时间,在这些方面深入研究了一下&#x…

GPT实战系列-LangChain的OutPutParser解析器

GPT实战系列-LangChain的OutPutParser解析器 LangChain GPT实战系列-LangChain如何构建基通义千问的多工具链 GPT实战系列-构建多参数的自定义LangChain工具 GPT实战系列-通过Basetool构建自定义LangChain工具方法 GPT实战系列-一种构建LangChain自定义Tool工具的简单方法…

leetcode 3.11

leetcode hot 100 二分查找1.寻找旋转排序数组中的最小值 矩阵1.搜索二维矩阵 II知识点:upper_bound, lower_bound知识点:二分查找 2.搜索二维矩阵 链表1.合并两个有序链表2.两数相加3. 删除链表的倒数第 N 个结点 二分查找 1.寻找旋转排序数组中的最小…

复习C语言基础中的基础:C语言发展、C89 C99有何区别、C语言特点

参考《C程序设计(第五版)》(谭浩强)一书: 1. 发展、C89 C99 2. 特点 记得时不时回顾一下背景特点,加深对C语言的理解。

git的实际运用

1. SSH配置和Github仓库克隆 注意博主在这里演示的SSH密钥生成方式,下面追加的五行不成功时可手动到.ssh下的config文件中添加即可 $ tail -5 config Host github.comHostName github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/test 演示 2. 关联…

【C++补充2】vector容器

1.vector:向量 --->动态数组 1.如何创建 注意点: 创建的容器不具有长度限制,插入方式只能通过成员的函数方式做插入 2.如何使用 push_back(); --->尾插法 pop_back(); --->尾删法 //万金油函数 emp…

数据完整性

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 数据完整性 数据完整性是关系数据库的一个重要特征,一般包含实体完整性、参照完整性和用户自定义完整性 3 种 实体完整性 实体完整性:规定表中的每…

QML| QML 组件

# | QML 组件 | 组件是可重用的、封装好的QML类型,并提供了定义好的接口。组件一般使用一个.qml文件定义。前面讲到的使用QML文档定义对象类型,其实就是创建了一个组件。这种使用独立QML文件创建组件的方法这里不再讨论。除了使用单独的QML文件,还可以使用Component类型在一…

LlamaParse: 高效的PDF文件RAG解析工具

LlamaParse: 高效的PDF文件RAG解析工具 通过Thomas Reid的深入探索,LlamaParse成为了目前我所见最优秀的RAG实现用PDF解析器。基于AI的技术,尤其在处理像SEC Q10这样的复杂文件时表现出色,这些文件通常包含文本、数字及其组合构成的表格&…

如何规范员工上网行为(规范员工上网行为的有效方法)

有很多企业会有员工管理问题,比如以下几位老板的担忧: 可见,很多企业都想要对员工上网行为进行管理。 我想企业要对员工上网行为进行规范管理,肯定也是出于多方面的考量。这些考量可能涵盖了工作效率、信息安全、网络带宽利用以及…

2024 ICDE | 时间序列(Time Series)论文总结

第40届IEEE数据工程国际会议(ICDE2024 )于5月13日到17日在荷兰乌德勒支召开。 本届ICDE Research共接收论文375篇,Industry and Application接受论文21篇。本文总结了ICDE 2024上有关时间序列(Time Series)的工作&…

277: 程序设计C 实验二 题目五 统计二进制数中的1的个数(python)

收藏 难度:一般 标签:暂无标签 题目描述 整数在计算机中使用二进制的形式表示,如整数7用二进制表示为:111,其中1的个数为3。 输入 输入一个整数 输出 输出该整数用二进制表示时,其中1的个数 样例输入…

C语言-存储期2.0

静态存储期 在数据段中分配的变量,统统拥有静态存储期,因此也都被称为静态变量。这里静态的含义,指的是这些变量的不会因为程序的运行而发生临时性的分配和释放,它们的生命周期是恒定的,跟整个程序一致。 静态变量包含…

指针的运算

这节主要解析几个指针运算的题加深对指针的理解。 题目一 #include <stdio.h> int main() { int a[5] { 1, 2, 3, 4, 5 }; int *ptr (int *)(&a 1); printf( "%d,%d", *(a 1), *(ptr - 1)); return 0; } 程序结果是什么&#xff1f; 结果是2&#…

一文轻松学会远程服务器/docker内 vscode,调试(debug)无/多参数/bash以及多工作空间运行的python程序,欢迎大佬补充,一起学习

至于如何SSH、docker以及无需参数的程序调试这篇就先不说了。本篇文章主要记录一下多参数和多工作空间调试的问题。 一、launch.json文件 如上图所示&#xff0c;正常情况下当我们想要调试项目名字为0的目录下的train.py文件时&#xff0c;我们会按顺序点1&#xff0c;2&#…

防范服务器被攻击:查询IP地址的重要性与方法

在当今数字化时代&#xff0c;服务器扮演着重要的角色&#xff0c;为企业、组织和个人提供各种网络服务。然而&#xff0c;服务器也成为了网络攻击者的目标之一&#xff0c;可能面临各种安全威胁&#xff0c;例如DDoS攻击、恶意软件攻击、数据泄露等。为了有效地防范服务器被攻…

[COCI2021-2022#1] Kamenčići 解题记录

[COCI2021-2022#1] Kamenčići 解题记录 题意简述 一个长度为 N N N 的字符串 S S S&#xff0c;仅由 C 和 P 组成。轮流每次从两端取出一个字符&#xff0c;先取出 K K K 个 C 的失败&#xff0c;求先手必胜还是必败。 题目分析 考虑区间 DP&#xff0c;设 d p l , r ,…

C++ 类型转换 未解决

类型转换 类型转换 类型转换是将一个数据类型的值转换为另一种数据类型的值。 C 中有四种类型转换&#xff1a;静态转换、动态转换、常量转换和重新解释转换。 静态转换&#xff08;Static Cast&#xff09; 静态转换是将一种数据类型的值强制转换为另一种数据类型的值。 静态…

用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?

用 docker 创建 jmeter 容器, 实现性能测试 我们都知道&#xff0c;jmeter可以做接口测试&#xff0c;也可以用于性能测试&#xff0c;现在企业中性能测试也大多使用jmeter。docker是最近这些年流行起来的容器部署工具&#xff0c;可以创建一个容器&#xff0c;然后把项目放到…