暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

5.4.2.8错误日志消息格式

原创 由迪 2020-08-04
745

每个错误日志接收器(写入器)组件都有一种特征输出格式,用于将消息写入其目的地,但其他因素可能会影响消息的内容:

对于所有日志编写器,错误日志消息中包含的ID是mysqld中负责编写消息的线程的ID 。该ID指示服务器的哪个部分产生了该消息,并且与常规查询日志和慢速查询日志消息一致,其中包括连接线程ID。

log_sink_internal输出格式

内部日志记录器生成传统的错误日志输出。它使用以下格式写消息:

timestamp thread_id [priority] [err_code] [subsystem] message

[]方括号字符是在消息格式文本字符。它们并不表示字段是可选的。

在 和 领域在MySQL 8.0中添加。它们是旧服务器生成的日志中缺少的。日志解析器可以将这些字段视为消息文本的一部分,仅对于服务器最近写入的日志(包括它们)才存在。解析器必须将 指标的一部分 视为字符串值。 [*err_code*]``[*subsystem*]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 self signed.
2020-03-22T12:35:47.669397Z 4 [Note] [MY-010051] [Server] Event Scheduler: scheduler thread started with id 4
2020-03-22T12:35:47.550939Z 0 [Note] [MY-010253] [Server] IPv6 is available.
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)以来的毫秒数。

log_sink_syseventlog输出格式

系统日志编写器产生的输出符合本地平台上使用的系统日志格式。

早期启动日志输出格式

服务器在处理启动选项之前,因此在知道错误日志设置(例如log_error_verbosity和和 log_timestamps系统变量值)以及知道要使用的日志组件之前,会生成一些错误日志消息 。服务器处理在启动过程早期生成的错误日志消息,如下所示:

  • 在MySQL 8.0.14之前,服务器会生成具有默认时间戳,格式和详细级别的消息,并对其进行缓冲。在处理启动选项并知道错误日志配置之后,服务器将刷新缓冲的消息。由于这些早期消息使用默认的日志配置,因此它们可能与启动选项所指定的不同。此外,除了默认值以外,早期消息不会刷新到日志编写器。例如,登录到JSON编写器不包括这些早期消息,因为它们不是JSON格式。

  • 从MySQL 8.0.14开始,服务器会缓冲日志事件,而不是格式化日志消息。这样一来,它便可以在已知设置后将配置设置追溯应用到那些事件,结果刷新的消息将使用配置的设置,而不是默认设置。同样,消息将刷新到所有已配置的编写器,而不仅仅是默认的编写器。

    如果在知道日志配置之前发生了致命错误,并且服务器必须退出,则服务器将使用日志记录默认值设置缓冲消息的格式,以使它们不会丢失。如果没有发生致命错误,但是在处理启动选项之前启动速度过慢,则服务器会使用日志记录默认值定期格式化和刷新缓冲的消息,以免显得无响应。尽管此行为与8.0.14之前的行为类似,但使用的是默认值,但在发生特殊情况时,最好不要丢失消息。

影响错误日志格式的系统变量

log_timestamps系统变量控制在写入错误日志消息时间戳的时区(以及一般查询日志和慢查询日志文件)。允许的值为 UTC(默认值)和 SYSTEM(本地系统时区)。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论