JBoss Fuse v6.2 - 跟踪

时间:2015-08-28 21:26:39

标签: jbossfuse fuseesb

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

1 个答案:

答案 0 :(得分:2)

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

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

  1. 创建常见的CXF请求和响应拦截器。将它们添加到您的所有Camel的CXF服务器/客户端配置
  2. 使用您的请求拦截器,从请求中提取事务ID(或自己创建)然后将其放入MDC映射。 MDC是log4j, slf4j,..使用的线程局部变量。
  3. 打印请求,由于MDC,它会将您的交易ID作为前缀。 别忘了在日志格式配置中添加MDC密钥
  4. 使用此事务Id打印所有日志,直到操作结束,直到结束。
    如果您始终使用direct-vm, direct进行路由,则不会出现问题。但是,您可能知道使用seda, multi处理等,您的执行由其他线程处理。由于MDC是线程局部变量,因此您需要通过传输来手动处理问题。
  5. 使用响应拦截器,记录响应消息,然后清除MDC值。
  6. 如果您使用CXF作为客户端,则应使用相同的拦截器方法来打印具有事务ID的客户端请求/响应。
  7. CXF-RSMDC链接视为入口点