Documentation Home
MySQL 8.0 参考手册  / 第 5 章 MySQL 服务器管理  / 5.4 MySQL 服务器日志  / 5.4.2 错误日志  /  5.4.2.2 默认错误日志目标配置

5.4.2.2 默认错误日志目标配置

本节介绍哪些服务器选项配置默认错误日志目标,可以是控制台或命名文件。它还指示哪些日志接收器组件将它们自己的输出目标基于默认目标。

在此讨论中,控制台表示 stderr标准错误输出。这是您的终端或控制台窗口,除非标准错误输出已被重定向到不同的目的地。

对于 Windows 和 Unix 系统,服务器对确定默认错误日志目标的选项的解释有所不同。请务必使用适合您的平台的信息配置目的地。服务器解释默认错误日志目标选项后,它会设置log_error系统变量以指示默认目标,这会影响多个日志接收器组件写入错误消息的位置。以下部分将讨论这些主题。

Windows 上的默认错误日志目标

在 Windows 上,mysqld使用 --log-error--pid-file--console选项来确定默认错误日志目标是控制台还是文件,如果是文件,则文件名:

  • 如果--console给出,默认目的地是控制台。(如果两者都给出--console则优先--log-error,并且以下项目 --log-error不适用。)

  • 如果--log-error没有给出,或者没有命名文件,默认目标是 host_name.err 在数据目录中命名的文件,除非 --pid-file指定了该选项。.err在这种情况下,文件名是数据目录中 带有后缀的 PID 文件基本名称。

  • 如果--log-error给文件命名,则默认目标是该文件( .err如果名称没有后缀,则添加后缀)。除非给出绝对路径名以指定不同的位置,否则文件位置在数据目录下。

如果默认错误日志目的地是控制台,则服务器将log_error 系统变量设置为stderr. 否则,默认目标是文件,服务器设置 log_error为文件名。

Unix 和类 Unix 系统上的默认错误日志目标

在 Unix 和类 Unix 系统上,mysqld使用--log-error选项来确定默认错误日志目标是控制台还是文件,如果是文件,则文件名:

  • 如果--log-error没有给出,默认目的地是控制台。

  • 如果--log-error在没有命名文件的情况下给出,则默认目标是 host_name.err 在数据目录中命名的文件。

  • 如果--log-error给文件命名,则默认目标是该文件( .err如果名称没有后缀,则添加后缀)。除非给出绝对路径名以指定不同的位置,否则文件位置在数据目录下。

  • 如果在使用mysqld_safe启动服务器的系统上的 、 或部分的选项文件中给出,则 mysqld_safe 查找 --log-error使用该选项,并将其传递给mysqld[mysqld][server][mysqld_safe]

笔记

Yum 或 APT 包安装通常会 像在服务器配置文件中/var/log那样使用选项 配置错误日志文件位置。log-error=/var/log/mysqld.log从选项中删除路径名会导致 host_name.err 使用数据目录中的文件。

如果默认错误日志目的地是控制台,则服务器将log_error 系统变量设置为stderr. 否则,默认目标是文件,服务器设置 log_error为文件名。

默认错误日志目标如何影响日志接收器

服务器解释错误日志目标配置选项后,它设置 log_error系统变量以指示默认错误日志目标。Log sink 组件可以将它们自己的输出目标基于该 log_error值,或者独立于 log_error

如果log_errorstderr,则默认错误日志目的地是控制台,并且将其输出目的地基于默认目的地的日志接收器也会写入控制台:

  • log_sink_internal, log_sink_json, log_sink_test: 这些接收器写入控制台。即使对于 log_sink_json可以多次启用的接收器也是如此;所有实例都写入控制台。

  • log_sink_syseventlog:无论值如何,此接收器都会写入系统日志 log_error

如果log_error不是 stderr,则默认错误日志目标是文件并log_error 指示文件名。将其输出目标基于默认目标基本输出文件命名的日志接收器。(一个接收器可能使用那个名称,或者它可能使用它的一些变体。)假设 log_errorfile_name. 然后日志接收器使用这样的名称:

  • log_sink_internal, log_sink_test: 这些接收器写入 file_name.

  • log_sink_json:在值中命名的此接收器的连续实例 log_error_services写入名为file_name 加上编号 后缀的文件: ,, 等等。 .NN.jsonfile_name.00.jsonfile_name.01.json

  • log_sink_syseventlog:无论值如何,此接收器都会写入系统日志 log_error