MySQL 外壳 8.0  /  第 12 章 MySQL Shell 日志记录和调试

第 12 章 MySQL Shell 日志记录和调试

您可以使用 MySQL Shell 的日志记录功能来验证 MySQL Shell 在运行时的状态并解决任何问题。

默认情况下,MySQL Shell 将日志级别 5 的日志信息(错误、警告和信息性消息)发送到应用程序日志文件。您还可以配置 MySQL Shell 将信息发送到可选的附加可视位置,并(从 MySQL 8.0.17 开始)作为详细输出发送到控制台。

您可以控制要发送到每个目的地的详细程度。对于应用程序日志和其他可查看位置,您可以将任何可用级别指定为最大详细级别。对于详细输出,您可以指定映射到最大详细级别的设置。可以使用以下级别的详细信息:

表 12.1 MySQL Shell 中的日志级别

日志记录级别 - 数字 记录级别 - 文本 意义 详细设置

1个

none

没有记录

0

2个

internal

内部错误

1个

3个

error

错误

1个

4个

warning

警告

1个

5个

info

信息性的

1个

6个

debug

调试

2个

7

debug2

调试2

3个

8个

debug3

调试3

4个

从 MySQL Shell 8.0.24 开始,您可以选择将您在 MySQL Shell 的 SQL 模式下交互发出的 SQL 语句发送到操作系统的系统日志记录工具(syslog在 Unix 上,或 Windows 事件日志)。将从 MySQL Shell 代码历史中排除的 SQL 语句不会发送到系统日志记录工具。

默认情况下,MySQL Shell 不会记录或输出在 AdminAPI 操作过程中由 MySQL Shell 自身执行的 SQL 语句。从 MySQL Shell 8.0.18 开始,如果您想观察这些操作在 SQL 执行方面的进度,除了操作期间返回的消息外,还可以为这些语句激活日志记录。如果日志记录级别设置为 5 或更高,这些语句将作为信息性消息写入 MySQL Shell 应用程序日志文件。如果详细设置为 1 或更高,它们也会作为详细输出发送到控制台。

默认情况下,MySQL Shell 将一个程序的所有日志记录发送到同一个应用程序日志文件,并将一个程序的所有输出发送到同一个目的地。从MySQL Shell 8.0.26开始,该函数 shell.create_context可以在MySQL Shell的Python模式下使用,支持Python程序多线程。该函数在一个新的 Python 线程中使用,以创建一个隔离日志记录、中断和委托的范围。上下文包装器处理和隔离打印到 stdoutstderr诊断输出的输出,以及用户输入,并单独处理密码。您还可以创建特定于线程的单个应用程序日志文件。

有关配置应用程序日志和可选的附加目标(stderr基于 Unix 的系统或OutputDebugString() Windows 系统上的功能)的说明,请参阅 第 12.1 节,“应用程序日志”

有关将日志记录信息作为详细输出发送到控制台的说明,请参阅 第 12.2 节,“详细输出”

有关将交互式 SQL 语句发送到系统日志记录工具的说明,请参阅第 12.3 节,“用户 SQL 语句的系统日志记录”

有关为 AdminAPI 操作执行的 SQL 语句激活日志记录的说明,请参阅 第 12.5 节,“记录 AdminAPI 操作”