可以让 mysqld 将错误日志写入系统日志(Windows 上的事件日志,Unix 和 Unix-like 系统上的 syslog
)。
本节描述如何使用内置过滤器 log_filter_internal
和系统日志 sink log_sink_syseventlog
立即生效并在后续服务器启动时生效。有关错误日志记录配置的常规信息,请参阅 第 7.4.2.1 节,“错误日志配置”。
要启用系统日志 sink,首先加载 sink 组件,然后修改 log_error_services
值:
INSTALL COMPONENT 'file://component_log_sink_syseventlog';
SET PERSIST log_error_services = 'log_filter_internal; log_sink_syseventlog';
要在服务器启动时生效 log_error_services
,请使用 第 7.4.2.1 节,“错误日志配置” 中的说明。这些说明也适用于其他错误日志系统变量。
对于 MySQL 8.3 配置,必须显式启用错误日志记录到系统日志。这与 MySQL 5.7 及更早版本不同,在这些版本中,Windows 上的错误日志记录到系统日志是默认启用的,而在所有平台上都不需要加载组件。
错误日志记录到系统日志可能需要额外的系统配置。请参阅您的平台的系统日志文档。
在 Windows 上,写入事件日志中的错误消息具有以下特征:
-
标记为
Error
、Warning
和Note
的条目将被写入事件日志,但不包括来自个别存储引擎的信息语句。 -
事件日志条目具有源
MySQL
(或MySQL-
如果tag
syseventlog.tag
被定义为tag
)。
在 Unix 和 Unix-like 系统上,日志记录到系统日志使用 syslog
。以下系统变量影响 syslog
消息:
-
syseventlog.facility
:syslog
消息的默认设施是daemon
。设置此变量以指定不同的设施。 -
syseventlog.include_pid
:是否在每行syslog
输出中包括服务器进程 ID。 -
syseventlog.tag
: 这个变量定义了添加到服务器标识符 (mysqld
) 中的标签,在syslog
消息中。如果定义了,标签将以leading hyphen追加到标识符。
MySQL 使用自定义标签 “系统” 来记录重要的系统消息,例如启动、关闭和一些重要的设置变化。在不支持自定义标签的日志中,包括 Windows 的事件日志和 Unix 及 Unix-like 系统中的 syslog
,系统消息将被分配给信息优先级别的标签。然而,这些消息将被记录到日志中,即使 MySQL 的 log_error_verbosity
设置通常排除信息级别的消息。
当日志 sink 必须回退到 “信息” 标签,而不是 “系统” 标签时,并且日志事件在 MySQL 服务器外部被进一步处理(例如,通过 syslog
配置进行过滤或转发),这些事件可能默认被次要应用程序处理为 “信息” 优先级,而不是 “系统” 优先级。