|
错误日志信息格式
每个错误日志接收器(写入器)组件均具有其用于将消息写入其目的地的特殊输出格式,但是其他因素可能会影响消息的内容:
•日志写入器可用的信息。如果在执行写入程序组件之前执行的日志过滤器组件删除了日志事件属性,则该属性不可用于写入。
•系统变量可能会影响日志编写器。对于所有日志编写器,错误日志消息中包含的ID是mysqld中负责编写消息的线程的ID。此ID指示服务器的哪个部分产生了该消息,并且与常规查询日志和慢速查询日志消息一致,其中包括连接线程ID。
1.输出格式:log_sink_internal
内部日志记录器生成传统的错误日志输出。它使用以下格式写消息:
timestamp thread_id [priority] [err_code] [subsystem] message |
[and]方括号字符是消息格式的文字字符。它们并不表示字段是可选的。 [err_code]和[subsystem]字段是在MySQL 8.0中添加的。它们是旧服务器生成的日志中缺少的。日志解析器可以将这些字段视为消息文本的一部分,该消息文本仅对于服务器最近写入的日志(包括它们)才存在。解析器必须将[err_code]指示符的err_code部分视为字符串值。
例子:
2020-03-22T12:35:47.538083Z 0 [Note] [MY-012487] [InnoDB] InnoDB: DDL log recovery : begin
2020-03-22T12:35:47.550565Z 0 [Warning] [MY-010068] [Server] CA certificate /var/mysql/sslinfo/cacert.pem is
2020-03-22T12:35:47.669397Z 4 [Note] [MY-010051] [Server] Event Scheduler: scheduler thread started with id 2020-03-22T12:35:47.550939Z 0 [Note] [MY-010253] [Server] IPv6 is available. |
2.输出格式:log_sink_json
JSON格式的日志编写器将消息生成为包含键值对的JSON对象。
例如:
{
"prio": 3,
"err_code": 10051,
"source_line": 533,
"source_file": "event_scheduler.cc",
"function": "run",
"msg": "Event Scheduler: scheduler thread started with id 5",
"time": "2020-03-19T12:30:20.297184Z",
"ts": 1584621317167,
"thread": 5,
"err_symbol": "ER_SCHEDULER_STARTED",
"SQL_state": "HY000",
"subsystem": "Server",
"buffered": 1584621020297184,
"label": "Note"
} |
ts(时间戳)键是在MySQL 8.0.20中添加的,对于JSON格式的日志编写器而言是唯一的。该值是一个整数,指示自纪元('1970-01-01 00:00:00'UTC)以来的毫秒数。
3输出格式:log_sink_syseventlog
系统日志编写器产生的输出符合本地平台上使用的系统日志格式。
4输出格式:Early-Startup Logging
服务器在处理启动选项之前,因此在知道错误日志设置(例如log_error_verbosity和log_timestamps系统变量值)之前以及在知道要使用哪些日志组件之前,会生成一些错误日志消息。服务器处理在启动过程早期生成的错误日志消息,如下所示:
•在MySQL 8.0.14之前,服务器会生成具有默认时间戳,格式和详细级别的消息,并对其进行缓冲。处理启动选项并知道错误日志配置后,服务器将刷新缓冲的消息。由于这些早期消息使用默认的日志配置,因此它们可能与启动选项所指定的不同。此外,除了默认值以外,早期消息不会刷新到日志编写器。例如,登录到JSON编写器不包括这些早期消息,因为它们不是JSON格式。
•从MySQL 8.0.14开始,服务器缓冲日志事件,而不是格式化日志消息。这样一来,它便可以在已知设置后将配置设置追溯应用到那些事件,结果刷新的消息将使用配置的设置,而不是默认设置。同样,消息将刷新到所有已配置的编写器,而不仅仅是默认的编写器。
如果在知道日志配置之前发生了致命错误,并且服务器必须退出,则服务器将使用日志缺省值来格式化缓冲的消息,以免丢失。如果没有发生致命错误,但是在处理启动选项之前启动速度过慢,则服务器会使用日志记录默认值定期格式化和刷新缓冲的消息,以免显得无响应。尽管此行为与8.0.14之前的行为类似,但使用的是默认值,但在发生特殊情况时,最好丢失消息。
影响错误日志格式的系统变量
log_timestamps系统变量控制写入错误日志(以及普通查询日志和慢速查询日志文件)的消息中时间戳的时区。允许的值为UTC(默认)和SYSTEM(本地系统时区)。
|
|