我创造了一个 RestTemplate
拦截器( ClientHttpRequestInterceptor
)记录请求和响应,并启用springcloudsleuth,目标是跟踪从拦截器接收到请求到返回结果的事务。但是,sleuth的trace和span id不会出现在拦截器日志消息中;似乎他们只是在处理请求的后期阶段。我希望能够跟踪到没有显式日志记录的服务,因此拦截器似乎是一个很好的方法,但是如果在这个阶段没有办法添加跟踪和span id,那么我可能需要找到另一种方法。寻找任何建议,要么将trace和span添加到拦截器日志消息中,要么使用trace和span id记录跨服务的请求和响应。谢谢!
编辑:下面是一个我当前从 RestTemplate
启用了spring cloud sleuth的拦截器:
2020-08-21 18:53:17.164 DEBUG [,,,] 14256 --- [ main] .c.o.l.RequestResponseLoggingInterceptor : ⇒ HTTP REQUEST: METHOD 'POST', URI 'http://localhost:59742/….
我真正想得到的是与侦探一起记录的请求(或repsonse) trace
以及 span
身份证号码:
2020-08-21 18:53:17.164 DEBUG [my-service-name,d3cb8a2fa7d1d9ac,80b023cb829bf254,false] 14256 --- [ main] .c.o.l.RequestResponseLoggingInterceptor : ⇒ HTTP REQUEST: METHOD 'POST', URI 'http://localhost:59742/….
我想知道这是否可行(即通过 RestTemplate
拦截器并让那些日志消息包含sleuth id),或者是否有其他方法可以使用sleuth trace/span id记录所有请求和响应。如有任何建议,我将不胜感激!
编辑2:更多的信息…我的侦探配置在这一点上只不过是在一个 bootstrap.yml
文件:
spring:
cloud:
sleuth:
enabled: true
我还创建/配置了一个自定义 CommonsRequestLoggingFilter
,它在拦截器之后执行(它是日志中的下一行),并且在其日志消息中有trace/span标识:
2020-08-21 18:53:17.164 DEBUG [my-app,d3cb8a2fa7d1d9ac,80b023cb829bf254,false] 3479 --- [c-auto-1-exec-2] c.t.c.o.l.CustomRequestLoggingFilter : ⇒ POST ...
因此,sleuth似乎配置正确(至少就我现在的目的而言);它只是没有将跟踪ID添加到拦截器的日志消息中。谢谢!
1条答案
按热度按时间iszxjhcz1#
侦探文件说
您必须将restemplate注册为bean,这样拦截器才能被注入。如果使用新关键字创建resttemplate示例,则插装将不起作用。
我希望你没有用
new
关键字来示例化resttemplate。