Dubbo实现日志调用链 - ThreadContext (threadlocal)
配置修改:
1.dubbo 配置默认的客户端过滤器和服务端过滤器
在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下:
xxxServiceFilter=com.xxx.logFilter
xxxClient=com.xxx.logFilter
修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter
<dubbo:provider filter="xxxServiceFilter" />
修改dubbo的client配置文件,在dubbo:client中添加配置的filter
<dubbo:client filter="xxxClientFilter" />
2.配置log输出格式,添加transId字段
代码修改:
1.web前台通过添加logFilter生成transId(一般可用sessionId)后,调用ThreadContext 的put() 存入 transId(本质是 threadlocal)
2.客户端过滤器中存入transId
3.服务端过滤器拿出transId,并且调用ThreadContext 存入transId
这样即可在多个微服务之间,通过tranId来定位整个服务