日志记录
概述
日志文件是系统可观察性的一个非常重要的方面,与监控类似。
RabbitMQ 在节点启动之初就开始记录日志。节点启动期间或之后将记录有关节点状态和配置的许多重要信息。
开发人员和操作人员在对问题进行故障排除或评估系统状态时应检查日志。
在日志记录方面,RabbitMQ 支持许多功能。
本指南涵盖以下主题:
- 支持的日志输出:文件 和 标准流(控制台)
- 日志文件位置
- 支持的日志级别
- 如何启用调试日志记录
- 如何在不访问日志文件的情况下查看正在运行的节点的日志
- 查看内部事件
- 连接生命周期事件记录
- JSON 格式的日志记录
- 日志类别
- 高级日志格式
- 如何在基于 systemd 的 Linux 系统上检查服务日志
- 日志轮换
- 日志记录到 Syslog
- 日志记录到系统主题交换,
amq.rabbitmq.log
等等。
日志输出
RabbitMQ 节点可以记录到多个输出。对于 RabbitMQ 安装,记录到文件是最常见的选项之一。
记录到标准输出和错误流是另一个常用的选项。 Syslog 是另一个开箱即用的支持选项。
不同的输出可以具有不同的日志级别。例如,控制台输出可以记录所有消息,包括调试信息,而文件输出只能记录错误消息和更高严重级别的消息。
默认日志输出和行为
节点记录到文件,默认情况下,如果没有明确配置输出。如果配置了一些输出,则将使用这些输出。
如果需要记录到文件和另一个输出,则必须将文件输出与其他所需日志输出(例如标准流输出)一起明确列出。
日志文件位置
有两种方法可以配置日志文件位置。一种是配置文件。建议使用此选项。另一种是 RABBITMQ_LOGS
环境变量。它在开发环境中很有用。
RABBITMQ_LOGS
不能与配置文件设置结合使用。当设置 RABBITMQ_LOGS
时,来自 rabbitmq.conf
的日志记录相关设置将被有效忽略。
请参阅文件和目录位置指南,以查找各种平台的默认日志文件位置。
日志文件位置可以在节点页面上的RabbitMQ 管理 UI 以及使用rabbitmq-diagnostics
中找到。
- bash
- PowerShell
- cmd
rabbitmq-diagnostics -q log_location
rabbitmq-diagnostics.bat -q log_location
rabbitmq-diagnostics.bat -q log_location
RABBITMQ_LOGS
变量值可以是文件路径或连字符(-
)。将值设置为连字符,如下所示
# Instructs the node to log to standard streams.
# IMPORTANT: the environment variable takes precedence over the configuration file.
# When it is set, all logging-related rabbitmq.conf settings will be
# effectively ignored.
RABBITMQ_LOGS=-
节点将所有日志消息发送到标准 I/O 流,即标准输出。
环境变量优先于配置文件。当设置此变量时,所有与日志记录相关的 rabbitmq.conf
设置将被有效忽略。
覆盖日志文件位置的推荐方法是通过 rabbitmq.conf
。
如何配置日志记录
以下几个部分介绍了与日志记录相关的各种配置设置。它们都使用 rabbitmq.conf
,即现代配置格式。
请参阅配置指南,了解有关如何配置 RabbitMQ 的一般概述。
记录到文件
记录到文件是 RabbitMQ 安装中最常见的选项之一。在现代版本中,RabbitMQ 节点仅在使用下面列出的配置键明确配置记录到文件时才会记录到文件。
log.file
:日志文件路径或false
以停用文件输出。默认值取自RABBITMQ_LOGS
环境变量或配置文件log.file.level
:文件输出的日志级别。默认级别为info
log.file.formatter
:控制日志条目格式,文本行或 JSONlog.file.rotation.date
、log.file.rotation.size
、log.file.rotation.count
用于日志文件轮换设置log.file.formatter.time_format
:控制时间戳格式
以下示例将覆盖日志文件名
log.file = rabbit.log
以下示例将覆盖日志文件位置
log.file = /opt/custom/var/log/rabbit.log
以下示例指示 RabbitMQ 以 debug
级别记录到文件
log.file.level = debug
有关支持的日志级别的列表,请参阅日志级别。
可以使用以下配置停用记录到文件
log.file = false
以 JSON 格式记录到文件
log.file.formatter = json
默认情况下,RabbitMQ 将使用 RFC 3339 时间戳格式。可以切换到基于 UNIX 纪元的格式
log.file = true
log.file.level = info
# use microseconds since UNIX epoch for timestamp format
log.file.formatter.time_format = epoch_usecs
本指南的其余部分将介绍更多选项,包括更高级的选项。
日志轮换
记录到文件时,建议使用 logrotate
进行轮换
RabbitMQ 节点始终追加到日志文件,因此会保留完整的日志历史记录。默认情况下不会执行日志文件轮换。 Debian 和 RPM 包将在安装包后设置日志通过 logrotate
进行轮换。
log.file.rotation.date
、log.file.rotation.size
、log.file.rotation.count
设置控制文件输出的日志文件轮换。
使用 Logrotate 进行轮换
在 Linux、BSD 和其他类 UNIX 系统上,logrotate 是一个广泛使用的日志文件轮换工具。它非常成熟,支持很多选项。
RabbitMQ Debian 和 RPM 包将设置 logrotate
以每周在默认 /var/log/rabbitmq
目录中的文件上运行。轮换配置可以在 /etc/logrotate.d/rabbitmq-server
中找到。
内置的定期轮换
log.file.rotation.date
不能与 log.file.rotation.size
结合使用,这两个选项是互斥的
使用 log.file.rotation.date
设置最小的定期轮换
# rotate every night at midnight
log.file.rotation.date = $D0
# keep up to 5 archived log files in addition to the current one
log.file.rotation.count = 5
# archived log files will be compressed
log.file.rotation.compress = true
# rotate every day at 23:00 (11:00 p.m.)
log.file.rotation.date = $D23
内置的基于文件大小的轮换
log.file.rotation.size
不能与 log.file.rotation.date
结合使用,这两个选项是互斥的
log.file.rotation.size
控制基于当前日志文件大小的轮换
# rotate when the file reaches 10 MiB
log.file.rotation.size = 10485760
# keep up to 5 archived log files in addition to the current one
log.file.rotation.count = 5
# archived log files will be compressed
log.file.rotation.compress = true
记录到控制台(标准输出)
记录到标准流(控制台)是 RabbitMQ 安装的另一个常用选项,特别是在 RabbitMQ 节点部署在容器中的情况下。RabbitMQ 节点仅在明确配置记录到标准流时才会记录到标准流。
以下是控制控制台(标准输出)日志记录的主要设置
log.console
(布尔值):设置为true
以启用控制台输出。默认值为 `falselog.console.level
:控制台输出的日志级别。默认级别为info
log.console.formatter
:控制日志条目格式,文本行或 JSONlog.console.formatter.time_format
:控制时间戳格式
要启用控制台日志记录,请使用以下配置片段
log.console = true
以下示例将停用控制台日志记录
log.console = false
以下示例指示 RabbitMQ 在记录到控制台时使用 debug
日志级别
log.console.level = debug
有关支持的日志级别的列表,请参阅日志级别。
以 JSON 格式记录到控制台
log.console.formatter = json
当启用控制台输出时,文件输出也会默认启用。要停用文件输出,请将 log.file
设置为 false
log.console = true
log.console.level = info
log.file = false
默认情况下,RabbitMQ 将使用 RFC 3339 时间戳格式。可以切换到基于 UNIX 纪元的格式
log.console = true
log.console.level = info
log.file = false
# use microseconds since UNIX epoch for timestamp format
log.console.formatter.time_format = epoch_usecs
请注意,RABBITMQ_LOGS=-
将停用文件输出,即使配置了 log.file
。
记录到 Syslog
RabbitMQ 日志可以通过 TCP 或 UDP 转发到 Syslog 服务器。默认情况下使用 UDP,并且**需要配置 Syslog 服务**。TLS 也受支持。
必须明确配置 Syslog 输出
log.syslog = true
Syslog 端点配置
默认情况下,Syslog 记录器将使用 RFC 3164 协议将日志消息发送到 UDP 端口 514。 RFC 5424 协议也可以使用。
为了使用 UDP,**Syslog 服务必须配置 UDP 输入**。
UDP 和 TCP 传输可以与 RFC 3164 和 RFC 5424 协议一起使用。TLS 支持需要 RFC 5424 协议。
以下示例使用 TCP 和 RFC 5424 协议
log.syslog = true
log.syslog.transport = tcp
log.syslog.protocol = rfc5424
要使用 TLS,必须提供一组标准的 TLS 选项
log.syslog = true
log.syslog.transport = tls
log.syslog.protocol = rfc5424
log.syslog.ssl_options.cacertfile = /path/to/ca_certificate.pem
log.syslog.ssl_options.certfile = /path/to/client_certificate.pem
log.syslog.ssl_options.keyfile = /path/to/client_key.pem
Syslog 服务 IP 地址和端口可以自定义
log.syslog = true
log.syslog.ip = 10.10.10.10
log.syslog.port = 1514
如果要使用主机名而不是 IP 地址
log.syslog = true
log.syslog.host = my.syslog-server.local
log.syslog.port = 1514
Syslog 元数据标识和设施值也可以配置。默认情况下,标识将设置为节点名称的名称部分(例如,rabbitmq@hostname
中的 rabbitmq
),设施将设置为 daemon
。
要设置日志消息的标识和设施
log.syslog = true
log.syslog.identity = my_rabbitmq
log.syslog.facility = user
以 JSON 格式记录到 Syslog
log.syslog = true
log.syslog.formatter = json
不太常用的 Syslog 客户端 选项可以使用 高级配置文件 进行配置。
JSON 记录
RabbitMQ 节点可以将日志消息格式化为 JSON,这对于其他软件解析来说很方便。
以 JSON 格式记录到文件
log.file.level = info
log.file.formatter = json
以 JSON 格式记录到控制台
log.console = true
log.console.level = info
log.console.formatter = json
log.file = false
以 JSON 格式记录到 Syslog
log.syslog = true
log.syslog.formatter = json
请注意,JSON 对象字段映射可以自定义 以匹配日志收集工具期望的特定基于 JSON 的日志格式。
日志消息类别
RabbitMQ 有几个消息类别,可以使用不同的级别或不同的文件进行记录。类别是
connection
:AMQP 0-9-1、AMQP 1.0、MQTT 和 STOMP 的连接生命周期事件。channel
:通道日志。主要是 AMQP 0-9-1 通道的错误和警告。queue
:队列日志。主要是调试消息。federation
:联合插件日志。upgrade
:详细的升级日志。这些可能过于冗长。default
:所有其他日志条目。您无法为该类别覆盖文件位置。
可以使用 log.<category>.level
和 log.<category>.file
配置变量为每个消息类别配置不同的日志级别或文件位置。
默认情况下,每个类别都不会按级别过滤。如果配置了一个输出以记录 debug
消息,则将打印所有类别的调试消息。配置一个类别的日志级别以覆盖。
例如,假设文件输出中为调试级别,以下操作将停用对连接事件的调试日志记录
log.file.level = debug
log.connection.level = info
要将所有联合日志重定向到 rabbit_federation.log
文件,请使用
log.federation.file = rabbit_federation.log
要停用日志类型,可以使用 none
日志级别。例如,要停用升级日志
log.upgrade.level = none
日志级别
日志级别是另一种过滤和调整日志记录的方法。日志级别具有严格的顺序。每条日志消息都具有一个严重性,从 debug
为最低严重性到 critical
为最高严重性。
可以通过设置类别和输出的日志级别来控制多个层的日志记录详细程度。更详细的日志级别将包括更多从 debug
为最详细到 none
为最不详细的日志消息。
RabbitMQ 使用以下日志级别
日志级别 | 详细程度 | 严重性 |
---|---|---|
debug | 最详细 | 最低严重性 |
info | ||
warning | ||
error | ||
critical | 最高严重性 | |
none | 最不详细 | 不适用 |
默认日志级别为 info
。
如果日志消息的严重性低于类别级别,则该消息将被丢弃,不会发送到任何输出。
如果未配置类别级别,则其消息将始终发送到所有输出。
要使 default
类别仅记录错误或更高严重性的消息,请使用
log.default.level = error
none
级别表示不记录日志。
每个输出都可以使用自己的日志级别。如果消息的严重性低于输出级别,则不会记录该消息。
例如,如果未配置任何输出以记录 debug
消息,即使将类别级别设置为 debug
,也不会记录调试消息。
另一方面,如果配置了一个输出以记录 debug
消息,它将从所有类别中获取这些消息,除非一个类别配置了更不详细的级别。
更改日志级别
更改有效日志级别有两种方法
- 通过 配置文件:这更灵活,但需要在更改之间重新启动节点
- 使用 CLI 工具,
rabbitmqctl set_log_level <level>
:更改是短暂的(不会在节点重新启动后保留),但可用于激活和停用,例如,在运行时的一段时间内激活和停用 调试日志记录。
要在运行的节点上将日志级别设置为 debug
rabbitmqctl -n rabbit@target-host set_log_level debug
要将级别设置为 info
rabbitmqctl -n rabbit@target-host set_log_level info
使用 CLI 工具尾随日志
现代版本支持使用 CLI 工具 尾随节点的日志。当日志文件位置未知或难以访问但允许 CLI 工具连接时,这很方便。
要尾随节点 rabbitmq@target-host
上的最后三百行,请使用 rabbitmq-diagnostics log_tail
# This is semantically equivalent to using `tail -n 300 /path/to/rabbit@hostname.log`.
# Use -n to specify target node, -N is to specify the number of lines.
rabbitmq-diagnostics -n rabbit@target-host log_tail -N 300
这将加载并打印日志文件中的最后一行。如果仅激活控制台日志记录,则此命令将失败并显示“文件未找到”(enoent
)错误。
要像 tail -f
或控制台日志记录一样,持续检查作为日志消息流追加到文件,请使用 rabbitmq-diagnostics log_tail_stream
# This is semantically equivalent to using `tail -f /path/to/rabbit@hostname.log`.
# Use Control-C to stop the stream.
rabbitmq-diagnostics -n rabbit@target-host log_tail_stream
这将持续尾随和流式传输添加到日志文件的行。如果仅激活控制台日志记录,则此命令将失败并显示“文件未找到”(enoent
)错误。
rabbitmq-diagnostics log_tail_stream
命令只能用于运行的 RabbitMQ 节点,如果节点未运行或节点上的 RabbitMQ 应用程序已使用 rabbitmqctl stop_app
停止,则该命令将失败。
激活调试日志记录
启用调试日志记录时,节点将记录大量信息,这些信息对故障排除很有用。此日志严重性旨在用于故障排除,例如 对等发现活动。
例如,要将调试消息记录到文件
log.file.level = debug
要将日志消息打印到标准 I/O 流
log.console = true
log.console.level = debug
要在运行时切换到调试日志记录
rabbitmqctl -n rabbit@target-host set_log_level debug
要将级别设置回 info
rabbitmqctl -n rabbit@target-host set_log_level info
可以停用某些类别的调试日志记录
log.file.level = debug
log.connection.level = info
log.channel.level = info
高级日志格式
本节介绍与高级日志格式相关的功能。这些设置在大多数环境中不是必需的,但可用于将 RabbitMQ 日志记录调整为特定格式。
本节中的大多数示例使用以下格式
log.file.formatter.level_format = lc4
但是,密钥也可以是以下之一
log.file.formatter.level_format
log.console.formatter.level_format
log.exchange.formatter.level_format
换句话说,本节中记录的大多数设置不特定于某个日志输出,无论是 file
、console
还是 exchange
。
时间格式
时间戳格式可以设置为以下格式之一
rfc3339_space
:带空格的 RFC 3339 格式,这是默认格式rfc3339_T
:与上述相同,但使用制表符epoch_usecs
:以微秒为单位的时间戳(自 UNIX 纪元以来的时间)epoch_secs
:以秒为单位的时间戳(自 UNIX 纪元以来的时间)
# this is the default format
log.file.formatter.time_format = rfc3339_space
例如,以下格式
log.file.formatter.time_format = epoch_usecs
将导致日志消息看起来像这样
1728025620684139 [info] <0.872.0> started TCP listener on [::]:5672
1728025620687050 [info] <0.892.0> started TLS (SSL) listener on [::]:5671
日志级别格式
日志级别 可以以不同的格式显示
# full value, lower case is the default format
log.file.formatter.level_format = lc
# use the four character, upper case format
log.file.formatter.level_format = uc4
以下值有效
lc
:完整值,小写(默认值),例如warning
或info
uc
:完整值,大写,例如WARNING
或INFO
lc3
:三个字符,小写,例如inf
或dbg
uc3
:三个字符,大写,例如INF
或WRN
lc4
:四个字符,小写,例如dbug
或warn
uc4
:四个字符,大写,例如DBUG
或WARN
日志消息格式
此设置应仅在覆盖日志格式是日志收集工具的硬性要求时作为最后的手段使用
除了单个日志消息组件(事件时间、日志级别、消息等)的格式之外,还可以使用 `` 配置设置更改整个日志行格式。
该设置必须设置为使用以下 $variables
的消息模式
$time
$level
- Erlang 进程
$pid
- 日志
$msg
这是默认格式的样子
# '$time [$level] $pid $msg' is the default format
log.console.formatter.plaintext.format = $time [$level] $pid $msg
以下自定义格式
# '$time [$level] $pid $msg' is the default format
log.console.formatter.plaintext.format = $level $time $msg
将生成看起来像这样的日志消息
info 2024-10-04 03:23:52.968389-04:00 connection 127.0.0.1:57181 -> 127.0.0.1:5672: user 'guest' authenticated and granted access to vhost '/'
debug 2024-10-04 03:24:03.338466-04:00 Will reconcile virtual host processes on all cluster members...
debug 2024-10-04 03:24:03.338587-04:00 Will make sure that processes of 9 virtual hosts are running on all reachable cluster nodes
请注意,Erlang 进程 pid 是如何排除的。此信息对于根本原因分析 (RCA) 至关重要,因此强烈建议使用默认格式。
JSON 字段映射
JSON 日志记录 可以通过以下方式自定义
- 可以使用
{standard key}:{renamed key}
表达式重命名单个密钥 - 可以使用
{standard key:-}
表达式删除单个密钥 - 可以使用
*:-
表达式删除除显式列出的密钥之外的所有密钥
然后,log.file.formatter.json.field_map
密钥必须设置为包含多个上述表达式的字符串值。
在演示示例之前,这里有一条具有默认映射的消息
{
"time":"2024-10-04 03:38:29.709578-04:00",
"level":"info",
"msg":"Time to start RabbitMQ: 2294 ms",
"line":427,
"pid":"<0.9.0>",
"file":"rabbit.erl",
"mfa":["rabbit","start_it",1]
}
{
"time":"2024-10-04 03:38:35.600956-04:00",
"level":"info",
"msg":"accepting AMQP connection 127.0.0.1:57604 -> 127.0.0.1:5672",
"pid":"<0.899.0>",
"domain":"rabbitmq.connection"
}
现在,一个使用自定义字段映射的 JSON 日志记录示例
# log as JSON
log.file.formatter = json
# Rename the 'time' field to 'ts', 'level' to 'lvl' and 'msg' to 'message',
# drop all other fields.
# Use an 'escaped string' just to make the value stand out
log.file.formatter.json.field_map = 'time:ts level:lvl msg:message *:-'
上面的示例将生成以下消息。请注意,与上面的默认示例相比,有些信息被省略了
{
"ts":"2024-10-04 03:34:43.600462-04:00",
"lvl":"info",
"message":"Time to start RabbitMQ: 2577 ms"
}
{
"ts":"2024-10-04 03:34:49.142396-04:00",
"lvl":"info",
"message":"accepting AMQP connection 127.0.0.1:57507 -> 127.0.0.1:5672"
}
强制单行日志记录
此设置可能会导致日志消息不完整,仅应在日志格式覆盖是日志收集工具的硬性要求时,作为最后的手段使用。
多行消息可能会被截断为单行。
# Accepted values are 'on' and 'off'.
# The default is 'off'.
log.console.formatter.single_line = on
此设置可能会导致日志消息不完整,仅应作为最后的手段使用。
服务日志
在基于 systemd
的 Linux 发行版中,可以使用 journalctl --system
检查系统服务日志
journalctl --system
这需要超级用户权限。其输出可以过滤以缩小到 RabbitMQ 特定的条目。
sudo journalctl --system | grep rabbitmq
服务日志将包括节点的标准输出和标准错误流。journalctl --system
的输出将类似于以下内容
Aug 26 11:03:04 localhost rabbitmq-server[968]: ## ##
Aug 26 11:03:04 localhost rabbitmq-server[968]: ## ## RabbitMQ 4.0.2. Copyright (c) 2005-2024 Broadcom. All Rights Reserved. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
Aug 26 11:03:04 localhost rabbitmq-server[968]: ########## Licensed under the MPL. See https://rabbitmq.cn/
Aug 26 11:03:04 localhost rabbitmq-server[968]: ###### ##
Aug 26 11:03:04 localhost rabbitmq-server[968]: ########## Logs: /var/log/rabbitmq/rabbit@localhost.log
Aug 26 11:03:04 localhost rabbitmq-server[968]: /var/log/rabbitmq/rabbit@localhost_upgrade.log
Aug 26 11:03:04 localhost rabbitmq-server[968]: Starting broker...
Aug 26 11:03:05 localhost rabbitmq-server[968]: systemd unit for activation check: "rabbitmq-server.service"
Aug 26 11:03:06 localhost rabbitmq-server[968]: completed with 6 plugins.
已记录的事件
连接生命周期事件
将记录至少发送 1 字节数据的成功 TCP 连接。不发送任何数据的连接,例如某些负载均衡器产品的运行状况检查,不会被记录。
以下是一个示例
2018-11-22 10:44:33.654 [info] <0.620.0> accepting AMQP connection <0.620.0> (127.0.0.1:52771 -> 127.0.0.1:5672)
该条目包括客户端 IP 地址和端口 (127.0.0.1:52771
) 以及服务器的目标 IP 地址和端口 (127.0.0.1:5672
)。这些信息在排查客户端连接问题时可能会有用。
一旦连接成功验证并被授予访问 虚拟主机 的权限,该事件也会被记录
2018-11-22 10:44:33.663 [info] <0.620.0> connection <0.620.0> (127.0.0.1:52771 -> 127.0.0.1:5672): user 'guest' authenticated and granted access to vhost '/'
上面的示例包括两个值,可以在各种场景中用作连接标识符:连接名称 (127.0.0.1:57919 -> 127.0.0.1:5672
) 和连接的 Erlang 进程 ID (<0.620.0>
)。后者由 rabbitmqctl 使用,前者由 HTTP API 使用。
一个 客户端连接 可以干净地关闭或异常关闭。在前一种情况下,客户端使用专用的库函数(方法)优雅地关闭 AMQP 0-9-1(或 1.0,或 STOMP,或 MQTT)连接。在后一种情况下,客户端关闭 TCP 连接或 TCP 连接失败。RabbitMQ 将记录这两种情况。
以下是成功关闭连接的示例条目
2018-06-17 06:23:29.855 [info] <0.634.0> closing AMQP connection <0.634.0> (127.0.0.1:58588 -> 127.0.0.1:5672, vhost: '/', user: 'guest')
突然关闭的连接将作为警告记录
2018-06-17 06:28:40.868 [warning] <0.646.0> closing AMQP connection <0.646.0> (127.0.0.1:58667 -> 127.0.0.1:5672, vhost: '/', user: 'guest'):
client unexpectedly closed TCP connection
突然关闭的连接可能是无害的。例如,短暂运行的程序可以自然停止,没有机会关闭其连接。它们还可以提示真正的错误,例如应用程序进程失败或代理关闭其认为处于空闲状态的 TCP 连接。
监视内部事件
RabbitMQ 节点具有内部机制。其中一些事件可能对监控、审计和故障排除目的有用。它们可以使用 rabbitmq-diagnostics
命令以 JSON 对象的形式使用
# will emit JSON objects
rabbitmq-diagnostics consume_event_stream
在交互式使用时,结果可以被管道传递到命令行 JSON 处理器,例如 jq
rabbitmq-diagnostics consume_event_stream | jq
事件以具有空白主体的消息形式发布。所有事件元数据都存储在消息元数据中(属性、标题)。
以下是已发布事件的列表。
核心代理
队列、交换机和绑定事件
queue.deleted
queue.created
exchange.created
exchange.deleted
binding.created
binding.deleted
connection.created
connection.closed
channel.created
channel.closed
消费者 事件
consumer.created
consumer.deleted
策略和参数 事件
policy.set
policy.cleared
parameter.set
parameter.cleared
虚拟主机 事件
vhost.created
vhost.deleted
vhost.limits.set
vhost.limits.cleared
用户管理事件
user.authentication.success
user.authentication.failure
user.created
user.deleted
user.password.changed
user.password.cleared
user.tags.set
权限 事件
permission.created
permission.deleted
topic.permission.created
topic.permission.deleted
警报 事件
alarm.set
alarm.cleared
铲子插件
工作者事件
shovel.worker.status
shovel.worker.removed
联合插件
链接事件
federation.link.status
federation.link.removed
使用系统日志交换机使用日志条目
RabbitMQ 可以将日志条目转发到系统交换机 amq.rabbitmq.log
,该交换机将在默认的 虚拟主机 中声明。
默认情况下,此功能处于停用状态。要激活此日志记录,请将 log.exchange
配置键设置为 true
# activate log forwarding to amq.rabbitmq.log, a topic exchange
log.exchange = true
log.exchange.level
可用于控制此日志记录目标将使用的 日志级别
log.exchange = true
log.exchange.level = warning
amq.rabbitmq.log
是一个常规的主题交换机,可以像这样使用。日志条目作为消息发布。消息主体包含已记录的消息,路由键设置为日志级别。
想要使用日志条目的应用程序需要声明一个队列并将其绑定到交换机,使用路由键来过滤特定日志级别,或使用 #
来使用配置的日志级别允许的所有日志条目。