跳至主要内容
版本:4.0

日志记录

概述

日志文件是系统可观察性的一个非常重要的方面,与监控类似。

RabbitMQ 在节点启动之初就开始记录日志。节点启动期间或之后将记录有关节点状态和配置的许多重要信息。

开发人员和操作人员在对问题进行故障排除或评估系统状态时应检查日志。

在日志记录方面,RabbitMQ 支持许多功能。

本指南涵盖以下主题:

等等。

日志输出

RabbitMQ 节点可以记录到多个输出。对于 RabbitMQ 安装,记录到文件是最常见的选项之一。

记录到标准输出和错误流是另一个常用的选项。 Syslog 是另一个开箱即用的支持选项。

不同的输出可以具有不同的日志级别。例如,控制台输出可以记录所有消息,包括调试信息,而文件输出只能记录错误消息和更高严重级别的消息。

默认日志输出和行为

节点记录到文件,默认情况下,如果没有明确配置输出。如果配置了一些输出,则将使用这些输出。

如果需要记录到文件和另一个输出,则必须将文件输出与其他所需日志输出(例如标准流输出)一起明确列出。

日志文件位置

有两种方法可以配置日志文件位置。一种是配置文件。建议使用此选项。另一种是 RABBITMQ_LOGS 环境变量。它在开发环境中很有用。

警告

RABBITMQ_LOGS 不能与配置文件设置结合使用。当设置 RABBITMQ_LOGS 时,来自 rabbitmq.conf 的日志记录相关设置将被有效忽略。

请参阅文件和目录位置指南,以查找各种平台的默认日志文件位置。

日志文件位置可以在节点页面上的RabbitMQ 管理 UI 以及使用rabbitmq-diagnostics 中找到。

rabbitmq-diagnostics -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:控制日志条目格式,文本行或 JSON
  • log.file.rotation.datelog.file.rotation.sizelog.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 节点始终追加到日志文件,因此会保留完整的日志历史记录。默认情况下不会执行日志文件轮换。 DebianRPM 包将在安装包后设置日志通过 logrotate 进行轮换

log.file.rotation.datelog.file.rotation.sizelog.file.rotation.count 设置控制文件输出的日志文件轮换。

使用 Logrotate 进行轮换

在 Linux、BSD 和其他类 UNIX 系统上,logrotate 是一个广泛使用的日志文件轮换工具。它非常成熟,支持很多选项。

RabbitMQ DebianRPM 包将设置 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 以启用控制台输出。默认值为 `false
  • log.console.level:控制台输出的日志级别。默认级别为 info
  • log.console.formatter:控制日志条目格式,文本行或 JSON
  • log.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 有几个消息类别,可以使用不同的级别或不同的文件进行记录。类别是

  • connectionAMQP 0-9-1、AMQP 1.0、MQTT 和 STOMP 的连接生命周期事件
  • channel:通道日志。主要是 AMQP 0-9-1 通道的错误和警告。
  • queue:队列日志。主要是调试消息。
  • federation:联合插件日志。
  • upgrade:详细的升级日志。这些可能过于冗长。
  • default:所有其他日志条目。您无法为该类别覆盖文件位置。

可以使用 log.<category>.levellog.<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

但是,密钥也可以是以下之一

  1. log.file.formatter.level_format
  2. log.console.formatter.level_format
  3. log.exchange.formatter.level_format

换句话说,本节中记录的大多数设置不特定于某个日志输出,无论是 fileconsole 还是 exchange

时间格式

时间戳格式可以设置为以下格式之一

  1. rfc3339_space:带空格的 RFC 3339 格式,这是默认格式
  2. rfc3339_T:与上述相同,但使用制表符
  3. epoch_usecs:以微秒为单位的时间戳(自 UNIX 纪元以来的时间)
  4. 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:完整值,小写(默认值),例如 warninginfo
  • uc:完整值,大写,例如 WARNINGINFO
  • lc3:三个字符,小写,例如 infdbg
  • uc3:三个字符,大写,例如 INFWRN
  • lc4:四个字符,小写,例如 dbugwarn
  • uc4:四个字符,大写,例如 DBUGWARN

日志消息格式

警告

此设置应仅在覆盖日志格式是日志收集工具的硬性要求时作为最后的手段使用

除了单个日志消息组件(事件时间、日志级别、消息等)的格式之外,还可以使用 `` 配置设置更改整个日志行格式。

该设置必须设置为使用以下 $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.org.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 是一个常规的主题交换机,可以像这样使用。日志条目作为消息发布。消息主体包含已记录的消息,路由键设置为日志级别。

想要使用日志条目的应用程序需要声明一个队列并将其绑定到交换机,使用路由键来过滤特定日志级别,或使用 # 来使用配置的日志级别允许的所有日志条目。

© 2024 RabbitMQ. All rights reserved.