7.4.2.2 默认错误日志目的地配置
本节描述了哪些服务器选项配置默认错误日志目的地,可以是控制台或命名文件。它还指示哪些日志沉淀组件基于默认目的地来确定自己的输出目的地。
在本讨论中,“console” 表示 stderr
,标准错误输出。这是您的终端或控制台窗口,除非标准错误输出已经被重定向到不同的目的地。
服务器对确定默认错误日志目的地的选项进行解释方式不同于 Windows 和 Unix 系统。确保使用适合平台的信息来配置目的地。服务器解释完默认错误日志目的地选项后,将设置log_error
系统变量,以指示默认目的地,这影响了多个日志沉淀组件写入错误信息的位置。以下节地址这些主题。
在 Windows 上,mysqld 使用--log-error
、--pid-file
和--console
选项来确定默认错误日志的目的地是控制台还是文件,如果是文件,还有文件名:
-
如果给出了
--console
,那么默认目的地就是控制台。(--console
如果同时给出了--log-error
,那么--console
的优先级高于--log-error
,并且关于--log-error
的所有项目都无效。) -
如果没有给出
--log-error
,或者给出了但是没有指定文件名,那么默认目的地是一个名为
的文件,在数据目录下,除非指定了host_name
.err--pid-file
选项。在这种情况下,文件名就是 PID 文件的基础名称加上.err
在数据目录下。 -
如果给定
--log-error
,默认的错误日志目标文件名是该名称(如果没有后缀,则添加.err
),文件路径在数据目录下,除非指定绝对路径。
如果默认的错误日志目标是控制台,服务器将设置log_error
系统变量为stderr
。否则,默认目标是一个文件,服务器将log_error
设置为文件名。
在Unix和Unix-like系统上,mysqld使用--log-error
选项来确定默认错误日志目标是控制台还是文件,如果是文件,文件名:
-
如果不给定
--log-error
,默认目标是控制台。 -
如果给定
--log-error
但不指定文件名,默认目标是一个名为
的文件,在数据目录下。host_name
.err -
如果给出
--log-error
,默认的目标文件名是该文件(如果没有后缀,添加.err
后缀),文件位置除非指定绝对路径在数据目录下。 -
如果
--log-error
在选项文件的[mysqld]
、[server]
或[mysqld_safe]
部分中,系统使用mysqld_safe启动服务器时,mysqld_safe找到并使用该选项,并将其传递给mysqld。
通常,Yum或APT软件包安装将在服务器配置文件中使用选项--log-error=/var/log/mysqld.log
将错误日志文件位置配置到/var/log
下。从选项中删除路径名,使用数据目录下的
文件。host_name
.err
如果默认错误日志目的地是控制台,服务器将设置log_error
系统变量为stderr
。否则,默认目的地是一个文件,服务器将log_error
设置为文件名。
服务器解释错误日志目的地配置选项后,将设置log_error
系统变量来指示默认错误日志目的地。日志汇聚组件可能基于log_error
值确定自己的输出目的地,或者独立于log_error
确定。
如果log_error
为stderr
-
log_sink_internal
,log_sink_json
,log_sink_test
: 这些汇聚器写入控制台。即使是像log_sink_json
可以多次启用的汇聚器,所有实例都写入控制台。 -
log_sink_syseventlog
: 这个sink无论log_error
的值是什么,都写入系统日志。
如果log_error
不是stderr
log_error
指定。基于默认目标文件命名的日志sink将其命名方式基于该文件名。 (一个sink可能使用完全相同的名称,也可能使用某种变体。) 假设log_error
值为file_name
。那么日志sink就像这样使用名称:
-
log_sink_internal
,log_sink_test
: 这些sink写入file_name
。 -
log_sink_json
: log_error_services值中的连续实例命名的这个sink写入文件名为file_name
加上一个带有编号的.
后缀:NN
.json
,file_name
.00.json
,以此类推。file_name
.01.json -
log_sink_syseventlog
: 无论log_error
值如何,这个sink都会写入系统日志。