首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >记录源应用程序错误通道的Spring Sleuth跨度Id

记录源应用程序错误通道的Spring Sleuth跨度Id
EN

Stack Overflow用户
提问于 2018-06-09 05:12:11
回答 1查看 427关注 0票数 1

我有一个带有RabbitMQ事件总线的系统设置和使用spring cloud stream的应用程序。为了帮助跟踪系统中的消息,我还使用了spring-cloud-sleuth

我的问题涉及到errorChannel流/绑定。我没有在我的配置中使用error绑定(指的是this)。相反,我有一个流设置来侦听errorChannel,它向消息添加一个额外的报头,然后将其发送到错误目的地。它看起来类似于下面(用Groovy编写的):

代码语言:javascript
复制
IntegrationFlows
  .from('errorChannel')
  .log()
  .handle(MessagingException, {e, h -> 
      def message = MessageBuilder.withPayload(e).copyHeaders(h).setHeader('name', 'myApp').build()
      errorSource.channel().send(message)
  .channel('nullChannel')
  .get()

其中errorSource的通道被声明为@Output

日志行输出类似以下内容:

INFO [myApp,1234,4321,false] LoggingHandler: ErrorMessage [...]

但是,当我从错误目的地收到消息时,X-B3-ParentSpanId头中的值与上述日志消息中的span id (4321值)或源应用程序中记录的任何其他span id不匹配。

我可以看到匹配的唯一方法是,如果我将org.springframework.cloud的日志记录提升到调试,即使这样,它也是来自TracingChannelInterceptor的日志行(尽管该实例看起来像是属于errorChannel的拦截器列表,所以我觉得我已经接近了)。我不想让DEBUG开着,因为它显然会变得很嘈杂。

在这之后,问题是,我是否可以在错误通道或绑定本身上设置任何日志记录,以输出一些具有与X-B3-ParentSpanId标头中所放内容匹配的跨度id的日志行?这样做的目的是获取span id并保存它,以便稍后在检查日志时可以使用它直接转到源应用程序。

我们还保存了跟踪id,并且我看到结果很好(并且与源应用程序的跟踪id相匹配),但是将跟踪id和span id放在一起会很有帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-06-09 05:45:36

MessagingException有一个failedMessage属性;您应该可以在它的标头中找到所需的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档