JBoss Fuse v6.2 - 跟踪
JBoss Fuse v6.2 - Tracing
对 JBoss Fuse 6.2 服务器发出的每个请求进行消息跟踪的方法是什么?在我的例子中,大多数入口点都是 CXF REST 服务,在某些情况下处理委托给 Camel 路由。我想使用可以关联请求处理的相同消息 ID 进行端到端跟踪。
在我的项目中,也有类似的需求。客户希望通过对具有事务 ID 的系统日志执行 grep 命令来查看所有 e2e 日志。
我为此使用了 CXF interceptors
和 MDC logging
功能,如下所示:
- 创建通用的 CXF 请求和响应拦截器。将它们添加到您所有的 Camel CXF Server/Client 配置中
- 使用您的请求拦截器,从请求中提取交易 ID(或您自己生成),然后将其放入 MDC 映射中。 MDC是
log4j, slf4j
,..使用的线程局部变量。
- 打印请求,由于 MDC,它将以您的交易 ID 作为前缀。
不要忘记在日志格式配置中添加您的 MDC 密钥
- 您打印的所有日志,直到使用此事务 Id 的操作结束为止。
如果您总是使用 direct-vm, direct
进行路由,那么这不会有问题。但是,您可能知道使用 seda, multi
处理等,您的执行由其他线程处理。由于MDC是线程局部变量,需要自己手动传递,麻烦处理
- 使用响应拦截器记录响应消息,然后清除 MDC 值。
- 如果您使用 CXF 作为客户端,您应该使用相同的拦截器方法来打印带有交易 ID 的客户端 request/reponses。
对 JBoss Fuse 6.2 服务器发出的每个请求进行消息跟踪的方法是什么?在我的例子中,大多数入口点都是 CXF REST 服务,在某些情况下处理委托给 Camel 路由。我想使用可以关联请求处理的相同消息 ID 进行端到端跟踪。
在我的项目中,也有类似的需求。客户希望通过对具有事务 ID 的系统日志执行 grep 命令来查看所有 e2e 日志。
我为此使用了 CXF interceptors
和 MDC logging
功能,如下所示:
- 创建通用的 CXF 请求和响应拦截器。将它们添加到您所有的 Camel CXF Server/Client 配置中
- 使用您的请求拦截器,从请求中提取交易 ID(或您自己生成),然后将其放入 MDC 映射中。 MDC是
log4j, slf4j
,..使用的线程局部变量。 - 打印请求,由于 MDC,它将以您的交易 ID 作为前缀。 不要忘记在日志格式配置中添加您的 MDC 密钥
- 您打印的所有日志,直到使用此事务 Id 的操作结束为止。
如果您总是使用direct-vm, direct
进行路由,那么这不会有问题。但是,您可能知道使用seda, multi
处理等,您的执行由其他线程处理。由于MDC是线程局部变量,需要自己手动传递,麻烦处理 - 使用响应拦截器记录响应消息,然后清除 MDC 值。
- 如果您使用 CXF 作为客户端,您应该使用相同的拦截器方法来打印带有交易 ID 的客户端 request/reponses。