可以让mysqld将错误日志写入系统日志(Windows、
syslogUnix 和类 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-tagsyseventlog.tagtag
在 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 上的事件日志,以及syslogUnix 和类 Unix 系统上,系统消息被分配用于信息优先级的标签。但是,即使 MySQL
log_error_verbosity设置通常在信息级别排除消息,这些消息也会打印到日志中。
当日志接收器必须以这种方式回退到
“信息”标签而不是“系统”标签时,并且日志事件在 MySQL 服务器之外进一步处理(例如,通过
syslog配置过滤或转发),这些事件可能默认情况下由辅助应用程序处理为
“信息”优先级而不是
“系统”优先级。