问题描述
项目引入spring-cloud-starter-sleuth,发现有些自定义Filter以及线程池异步线程日志无traceId.容易在日志排查中忽略掉,从而影响日志分析.
缘由分析以及解决方案
自定义Filter日志无traceId
-
缘由(Filter优先级问题)
sleuth框架的filter优先级为以下值

-
解决方案
设置优先级高于上面的即可
线程池异步线程日志无traceId问题
- 缘由
线程池实例不在spring容器管理时,sleuth框架无法做处理如以下定义线程池方式不由spring管理
-
在类中声明为成员变量

- 在方法中声明线程池
- 解决方案
- 在spring容器中注册线程池.如使用@Bean等
- 使用MDC获取再做处理(这个相对麻烦点,提议使用方法1)
String traceId = MDC.get("X-B3-TraceId");
String spanId = MDC.get("X-B3-SpanId");
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


