Documentation Home

5.4.2.8 错误记录到系统日志

可以让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 上,写入应用程序日志中的事件日志的错误消息具有以下特征:

  • 标记为ErrorWarningNote的条目将写入事件日志,但不会写入来自各个存储引擎的信息语句等消息。

  • 事件日志条目的来源为MySQL (或 如果定义为)。 MySQL-tagsyseventlog.tagtag

在 Unix 和类 Unix 系统上,记录到系统日志使用 syslog. 以下系统变量会影响 syslog消息:

  • syseventlog.facility:消息的默认工具syslogdaemon。设置此变量以指定不同的设施。

  • syseventlog.include_pid:是否在每行 syslog输出中包含服务器进程 ID。

  • syseventlog.tag:此变量定义要添加到消息中的服务器标识符 ( mysqld)的标记syslog 。如果已定义,标签将附加到带有前导连字符的标识符。

笔记

在 MySQL 8.0.13 之前,使用 log_syslog_facilitylog_syslog_include_pidlog_syslog_tag系统变量而不是 变量。 syseventlog.xxx

MySQL 使用自定义标签System来表示有关非错误情况的重要系统消息,例如启动、关闭和对设置的一些重大更改。在不支持自定义标签的日志中,包括 Windows 上的事件日志,以及syslogUnix 和类 Unix 系统上,系统消息被分配用于信息优先级的标签。但是,即使 MySQL log_error_verbosity设置通常在信息级别排除消息,这些消息也会打印到日志中。

当日志接收器必须以这种方式回退到 信息标签而不是系统标签时,并且日志事件在 MySQL 服务器之外进一步处理(例如,通过 syslog配置过滤或转发),这些事件可能默认情况下由辅助应用程序处理为 信息优先级而不是 系统优先级。