首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

操作日志追踪记录之MDC入门

MDC 的作用是解决这个问题。   MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。...当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。...MDC使用场景 MDC可以将一个处理线程中你想体现在日志文件中的数据统一管理起来,根据你的日志文件配置决定是否输出。   ...,结合grep命令能根据跟踪编号将本次的处理日志全部输出) MDC如何使用 MDC我个人会用AOP或Filter或Interceptor这类工具配合使用,获得你希望输出到日志的变量并调用MDC.put(...MDC.put("siteName" , "北京"); MDC.put("userName" , "userwyh"); TraceLogger. info("测试MDC打印一"

6.3K31

SpringBoot MDC全局链路解决方案

解决方案 LogBack这个日志框架提供了MDC( Mapped Diagnostic Context,映射调试上下文 ) 这个功能,MDC可以理解为与线程绑定的数据存储器。...数据可以被当前线程访问,当前线程的子线程会继承其父线程中MDC的内容。MDC 在 Spring Boot 中的作用是为日志事件提供上下文信息,并将其与特定的请求、线程或操作关联起来。...通过使用 MDC,可以更好地理解和分析日志,并在多线程环境中确保日志的准确性和一致性。此外,MDC 还可以用于日志审计、故障排查和跟踪特定操作的执行路径。...那么这里我们使用它对请求做MDC赋值处理。...-- 配置MDC插件 --> <conversionRule conversionWord="%<em>mdc</em>" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter

45930

SpringBoot + MDC 实现全链路调用日志跟踪

MDC 介绍 MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。...MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。...当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据。...API 说明 clear() => 移除所有 MDC get (String key) => 获取当前线程 MDC 中指定 key 的值 getContext() => 获取当前线程 MDCMDC...put(String key, Object o) => 往当前线程的 MDC 中存入指定的键值对 remove(String key) => 删除当前线程 MDC 中指定的键值对 MDC 使用 Constants.TRACE_ID

76351

我不是最后一个知道MDC的吧?

这个东西,第一反应就是,卧槽,MDC是什么?...MDC功能测验 以上,我们大致知道了MDC做了什么了。这仅仅是我们自己看了别人在项目代码里用MDC以及MDC的一点源码得到的一些信息。...而有了MDC,再配合linux的grep用关键字抽取日志,那就方便多了。MDC还挺棒的呢! 以上是通过项目里使用MDC,然后通过自己的小测验和简单的一点源码来对MDC有了一个初步的了解。...slf4j中MDC是什么鬼 MDC从使用方式上与我们常用的记录日志的方式有些不同,我对它的理解是MDC可以将一个处理线程中你想体现在日志文件中的数据统一管理起来,根据你的日志文件配置决定是否输出。...使代码简洁、日志风格统一 小结 到这里MDC就告一段落了,我们了解了MDC的基本使用和好处,小伙伴们你们学会了吗?

88420

MDC是什么鬼?用法、源码一锅端

MDC 快速入门; 2. MDC 源码解读; 3. MDC 能干什么? 阿里开源项目 Canal: ? 老项目这么用过: ?...但是无论怎么用,都逃不过 MDC API 的使用,下面先花一分钟快速入门,然后再逐步去深入 MDC。 1....MDC.remove(Key) 后,便可将业务字段从 MDC 中删除,日志中就不再打印请求 ID 啦; 趁热打铁,我们迅速看看在多线程情况下,使用 MDC 会发生什么现象呢?...MDC 能干什么? MDC 的应用场景其实蛮多的,下面简单列举几个。...http://logback.qos.ch/manual/mdc.html 行文至此,接近尾声,本次主要让大家对 MDC 进行快速入门,并通过剖析源码,窥探 MDC 的背后,最终分享了一些 MDC 在项目研发中能做什么的实践思路

3.6K30

SpringBoot+MDC实现全链路调用日志跟踪~

大家好,我是小富~ 前面有一篇文章简单的介绍过MDC,这次结合具体的案例、生产中的具体问题深入了解一下MDC。...MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。 当前线程的子线程会继承其父线程中的 MDC 的内容。...当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。...() :获取当前线程MDCMDC put(String key, Object o) :往当前线程的MDC中存入指定的键值对 remove(String key) :删除当前线程MDC中指定的键值对...(context)】,这样子线程和主线程MDC对应的Map就是一样的了 判断当前线程对应MDC的Map是否存在,存在则设置 设置MDC中的traceId值,不存在则新生成,针对不是子线程的情况,如果是子线程

2.8K31

Spring Boot + MDC 实现全链路调用日志跟踪

写在前面 通过本文将了解到什么是MDCMDC应用中存在的问题、如何解决存在的问题 MDC介绍 简介: MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback...MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。...当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。...对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据 API说明: clear() => 移除所有MDC get (String key) => 获取当前线程MDC中指定key的值 getContext...() => 获取当前线程MDCMDC put(String key, Object o) => 往当前线程的MDC中存入指定的键值对 remove(String key) => 删除当前线程MDC中指定的键值对

1.9K20

Spring Boot 之 MDC 实现全链路调用日志跟踪

通过本文将了解到什么是MDCMDC应用中存在的问题、如何解决存在的问题 MDC介绍 简介: MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback...MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当前线程的子线程会继承其父线程中的 MDC 的内容。...当需要记录日志时,只需要从 MDC 中获取所需的信息即可。MDC 的内容则由程序在适当的时候保存进去。...对于一个 Web 应用来说,通常是在请求被处理的最开始保存这些数据 API说明: clear() => 移除所有MDC get (String key) => 获取当前线程MDC中指定key的值 getContext...() => 获取当前线程MDCMDC put(String key, Object o) => 往当前线程的MDC中存入指定的键值对 remove(String key) => 删除当前线程MDC中指定的键值对

77120
领券