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

实现HttpRequestInterceptor接口并重写process方法

​ 如果调用线程中含有traceId,则需要将获取到的traceId通过request中的header向下透传下去

  • 为HttpClient添加拦截器

  • 通过addInterceptorFirst方法为HttpClient添加拦截器

OKHttp:

  • 实现OKHttp拦截器

  • 实现Interceptor拦截器,重写interceptor方法,实现逻辑和HttpClient差不多,如果能够获取到当前线程的traceId则向下透传

  • 为OkHttp添加拦截器

调用addNetworkInterceptor方法添加拦截器

RestTemplate:

  • 实现RestTemplate拦截器

实现ClientHttpRequestInterceptor接口,并重写intercept方法,其余逻辑都是一样的不重复说明

  • 为RestTemplate添加拦截器

  • 调用setInterceptors方法添加拦截器

第三方服务拦截器:

HTTP调用第三方服务接口全流程traceId需要第三方服务配合,第三方服务需要添加拦截器拿到request header中的traceId并添加到MDC中

Original: https://www.cnblogs.com/fnlingnzb-learner/p/16458445.html
Author: Boblim
Title: SpringBoot+MDC实现全链路调用日志跟踪

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/541019/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • spring-redis-session 自定义 key 和过期时间

    对于分布式应用来说,最开始遇到的问题就是 session 的存储了,解决方案大致有如下几种 使用 spring-session 它可以把 session 存储到你想存储的位置,如 …

    Java 2023年6月5日
    087
  • [Java编程思想] 第六章 访问权限控制

    6.1 包:库单元 包内含有一组类,它们在单一的名字空间之下被组织在了一起。 当编写一个Java源代码文件时,此文件通常被称为编译单元。每个编译单元都必须有一个后缀名.java,而…

    Java 2023年6月5日
    078
  • nginx启动时出现Unit nginx.service is masked.

    systemctl unmask nginx.service https://blog.csdn.net/hl449006540/article/details/80323386 …

    Java 2023年5月30日
    070
  • 科学计算与可视化————-

    一,读书笔记 Matplotlib matplotlib是Python优秀的数据可视化第三方库matplotlib库的效果可参考http://matplotlib.org/gall…

    Java 2023年6月6日
    0116
  • Java有几种文件拷贝方式,哪一种效率最高?

    常见的有三种文件拷贝方式 io下的包会把数据从内核态拷贝到用户态,nio下的包则可以避免不必要的拷贝和上下文切换提高数据拷贝的效率。 Original: https://www.c…

    Java 2023年5月29日
    087
  • 创建并操作循环链表

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月5日
    073
  • Java(7)大数

    如果基本的整数和浮点数精度不能够满足需求,那么可以使用 java.math包中两个很有用的类: BigInteger和 BigDecimal。这两个类可以处理包含任意长度数字序列的…

    Java 2023年6月9日
    067
  • springboot竟然有5种默认的加载路径,你未必都知道

    上次分享了如何一步一步搭建一个springboot的项目,详细参见《5分钟快速搭建一个springboot的项目》,最终的结果是在”8080″端口搭建起了服…

    Java 2023年6月9日
    091
  • 前端(Css学习) 2

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言…

    Java 2023年6月5日
    092
  • 数据结构(C++)–学习单链表时发现的一些小坑

    #include<bits stdc++.h> using namespace std; const int MaxSize = 10; template <cl…

    Java 2023年6月7日
    083
  • 使用查询让表格纵排变横排

    在数据库查询的操作中,常常会见到,让纵向排列的数据变成横向排,这其中涉及到的知识点有聚合函数,分组及if函数等等. 大致思路可以分为:根据题目意思,先选择合适的列名进行分组;使用聚…

    Java 2023年6月8日
    076
  • 进程与线程的区别:最浅显易懂的解释

    作者丨阮一峰 http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 进程(process)和线程(th…

    Java 2023年5月30日
    068
  • Java 形参传递机制

    形参细节补充 形参传递机制 如果前面的基本类型和引用类型学明白了,这一部分很简单。 在执行类方法的时候, JVM 会开辟临时栈,这个 &#x4E34;&#x65F6…

    Java 2023年6月5日
    087
  • Okhttp3 网络请求框架与 Gson

    <span class="hljs-params"><dependency> <span class="hljs-par…

    Java 2023年6月9日
    079
  • java 8 新特性

    java8 是一个有里程碑的一个版本,提供了很多的新特性,但这些新特性是实打实有用的,而不是一些鸡肋 接口新特性 java8 之前,往接口里新加一个方法,那么所有的实现类都需要变动…

    Java 2023年6月8日
    083
  • BaseServlet ——servlet的优化

    BaseServlet ——servlet的优化 servlet作用 ​ 通俗来讲servlet专门用来接收客户端的请求,专门接收客户端的请求数据,然后调用底层service处理数…

    Java 2023年6月5日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球