JBoss Fuse v6.2 - 跟踪

JBoss Fuse v6.2 - Tracing

对 JBoss Fuse 6.2 服务器发出的每个请求进行消息跟踪的方法是什么?在我的例子中,大多数入口点都是 CXF REST 服务,在某些情况下处理委托给 Camel 路由。我想使用可以关联​​请求处理的相同消息 ID 进行端到端跟踪。

在我的项目中,也有类似的需求。客户希望通过对具有事务 ID 的系统日志执行 grep 命令来查看所有 e2e 日志。

我为此使用了 CXF interceptorsMDC logging 功能,如下所示:

  1. 创建通用的 CXF 请求和响应拦截器。将它们添加到您所有的 Camel CXF Server/Client 配置中
  2. 使用您的请求拦截器,从请求中提取交易 ID(或您自己生成),然后将其放入 MDC 映射中。 MDC是log4j, slf4j,..使用的线程局部变量。
  3. 打印请求,由于 MDC,它将以您的交易 ID 作为前缀。 不要忘记在日志格式配置中添加您的 MDC 密钥
  4. 您打印的所有日志,直到使用此事务 Id 的操作结束为止。
    如果您总是使用 direct-vm, direct 进行路由,那么这不会有问题。但是,您可能知道使用 seda, multi 处理等,您的执行由其他线程处理。由于MDC是线程局部变量,需要自己手动传递,麻烦处理
  5. 使用响应拦截器记录响应消息,然后清除 MDC 值。
  6. 如果您使用 CXF 作为客户端,您应该使用相同的拦截器方法来打印带有交易 ID 的客户端 request/reponses。

CXF-RS and MDC 链接视为入口点