实时访问RabbitMQ日志

时间:2019-09-16 20:35:17

标签: rabbitmq rabbitmq-exchange

当阅读曼宁的《 RabbitMQ in Action》一书时,我遇到了一个有趣的话题。显然,可以将使用者设置为能够在使用者中实时接收所有RabbitMQ日志。

我了解到RabbitMQ将日志记录发布到名为topic的类型amq.rabbitmq.log的交换中。消费者可以收听特定的严重级别,例如可以通过将路由密钥设置为errorwarninginfo来对其进行过滤。

我的问题是;我在PC上安装了默认的RabbitMQ服务器,但找不到名为amq.rabbitmq.log的任何交换。 amq.rabbitmq.trace仅是可能相关的一个,但是该事件用于事件(例如queue.deleted,queue.created等事件),换句话说,这不是我想要的。

有人可以澄清我的问题吗?为什么amq.rabbitmq.log交换在干净的RabbitMQ服务器安装上不可用?

引用:

  

也许当您使用发现的Rabbitmqctl列出交易所时   一个名为amq.rabbitmq.log的交换,其类型为主题。 RabbitMQ将   使用严重性级别将日志发布到该交易所   路由密钥-您将收到错误,警告和信息。根据你的   从前几章中学到的知识,您可以创建一个消费者来   听这些日志并做出相应的反应。

2 个答案:

答案 0 :(得分:2)

您必须启用它。创建/etc/rabbitmq/rabbitmq.conf文件,并确保其中包含以下行:

log.exchange = true

我只是为rabbitmq.com网站添加了source,却看不到任何地方记录的设置。如果您愿意,可以在该存储库中提交一个新的问题,我会修复它,或者打开您自己的PR来这样做。


注意: RabbitMQ团队监视rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。

答案 1 :(得分:0)

为时已晚,但希望对您有所帮助。到目前为止,它对我有用。交换“ amq.rabbitmq.log”将由rabbitmq代理本身自动创建。我使用的RabbitMQ代理版本是:3.8.1

添加

log.exchange = true

进入您的 rabbitmq.conf 文件,然后重新启动Rabbitmq服务。

每次更新Rabbitmq.conf文件时,您都需要重新启动Rabbitmq服务。

打开cmd,然后在Windows中输入以下内容:

  1. rabbitmq服务停止
  2. rabbitmq-service安装
  3. rabbitmq服务启动
  4. rabbitmqctl start_app