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