可以让 mysqld 将错误日志写入系统日志(Windows 上的事件日志,以及 Unix 和类 Unix 系统上的 syslog
)。
本节介绍如何使用内置过滤器 log_filter_internal
和系统日志接收器 log_sink_syseventlog
配置错误日志记录,使其立即生效并用于后续的服务器启动。有关配置错误日志记录的一般信息,请参阅 第 7.4.2.1 节“错误日志配置”。
要启用系统日志接收器,请先加载接收器组件,然后修改 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 节“错误日志配置” 中的说明。这些说明也适用于其他错误日志记录系统变量。
将错误记录到系统日志可能需要额外的系统配置。请查阅您平台上的系统日志文档。
在 Windows 上,写入应用程序日志中的事件日志的错误消息具有以下特征
标记为
Error
、Warning
和Note
的条目将写入事件日志,但不会写入来自各个存储引擎的信息性语句等消息。事件日志条目的来源为
MySQL
(如果syseventlog.tag
定义为tag
,则为MySQL-
)。tag
在 Unix 和类 Unix 系统上,记录到系统日志使用 syslog
。以下系统变量会影响 syslog
消息
syseventlog.facility
:syslog
消息的默认设备是daemon
。设置此变量以指定其他设备。syseventlog.include_pid
:是否在syslog
输出的每一行中包含服务器进程 ID。syseventlog.tag
:此变量定义了一个标签,用于添加到syslog
消息中的服务器标识符(mysqld
)中。如果定义了,则该标签将附加到标识符后面,并带有一个前导连字符。
MySQL 对有关非错误情况的重要系统消息(例如启动、关闭和设置的一些重大更改)使用自定义标签 “系统”。在不支持自定义标签的日志中(包括 Windows 上的事件日志,以及 Unix 和类 Unix 系统上的 syslog
),系统消息将被分配给用于信息优先级级别的标签。但是,即使 MySQL log_error_verbosity
设置通常会排除信息级别的消息,这些消息也会被打印到日志中。
当日志接收器必须以这种方式回退到标签 “信息” 而不是 “系统” 时,并且日志事件在 MySQL 服务器外部被进一步处理(例如,由 syslog
配置过滤或转发),默认情况下,这些事件可能会被辅助应用程序处理为 “信息” 优先级,而不是 “系统” 优先级。