如何在RabbitMQ中记录AMQP命令?

如何在RabbitMQ中记录AMQP命令?,rabbitmq,Rabbitmq,如何记录通过RabbitMQ代理的所有AMQP命令,包括basic.ack、confirm.select等服务命令?您需要修改rabbimq配置。看 具体来说,您需要为感兴趣的内容设置信息或调试: [ {log_levels, [ {channel, debug}, {connection, debug} ]} ]. 在该页面中,查找日志级别,您将找到以下配置信息: 控制日志记录的粒度。该值是日志事件类别和日志级别对的列表 级别可以是“无”或“未记录事件”、“仅记录错误

如何记录通过RabbitMQ代理的所有AMQP命令,包括basic.ack、confirm.select等服务命令?

您需要修改rabbimq配置。看

具体来说,您需要为感兴趣的内容设置信息或调试:

[
  {log_levels, [
    {channel, debug},
    {connection, debug}
  ]}
].
在该页面中,查找日志级别,您将找到以下配置信息:

控制日志记录的粒度。该值是日志事件类别和日志级别对的列表

级别可以是“无”或“未记录事件”、“仅记录错误”、“仅记录警告”和“仅记录错误和警告”、“记录信息”错误、警告和信息性消息,或记录“调试”错误、警告、信息性消息和调试消息

目前定义了四个类别。其他当前未分类的事件始终被记录

这些类别包括:

通道-适用于与AMQP通道相关的所有事件 连接-用于与网络连接相关的所有事件 联合会-所有与联合会有关的活动 镜像-用于与镜像队列相关的所有事件 默认值:[{connection,info}]


标准Java客户端库com.rabbitmq:amqp client:3.5.4包含跟踪工具,该工具作为客户端和代理之间的独立代理。它将所有经过它的AMQP命令记录到System.out

这里描述的是:

下面是其输出的一个示例:

1441190584927: <Tracer-0> ch#1 -> {#method<channel.open>(out-of-band=), null, ""}
1441190584968: <Tracer-0> ch#1 <- {#method<channel.open-ok>(channel-id=), null, ""}
1441190585008: <Tracer-0> ch#1 -> {#method<confirm.select>(nowait=false), null, ""}
1441190585047: <Tracer-0> ch#1 <- {#method<confirm.select-ok>(), null, ""}
1441190585090: <Tracer-0> ch#1 -> {#method<basic.publish>(ticket=0, exchange=node.confirm.publish, routing-key=, mandatory=false, immediate=false), #contentHeader<basic>(content-type=string/utf8, content-encoding=null, headers=null, delivery-mode=2, priority=null, correlation-id=null, reply-to=null, expiration=null, message-id=null, timestamp=null, type=null, user-id=null, app-id=null, cluster-id=null), "some message"}
1441190585128: <Tracer-0> ch#1 <- {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'node.confirm.publish' in vhost '/', class-id=60, method-id=40), null, ""}
我试图将{log_levels,[{connection,debug},{channel,debug}]}放在我的rabbitmq.config中,但没有看到记录AMQP命令。我已经通过将log level设置为none并观察到没有记录任何内容来检查我的配置文件是否被使用。我错过了什么?