第 12 章 MySQL Shell 日志记录和调试
目录
- 12.1 应用日志
- 12.2 详细输出
- 12.3 用户SQL语句的系统日志记录
- 12.4 MySQL Shell SQL 日志记录
- 12.5 记录AdminAPI操作
您可以使用 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 线程内使用来创建一个隔离日志记录、中断和委托的作用域。上下文包装器处理和隔离打印到的输出 stdout
和stderr
诊断输出以及用户输入,并单独处理密码。您还可以创建特定于线程的单独应用程序日志文件。
有关配置应用程序日志和可选附加目标(stderr
基于 Unix 的系统或OutputDebugString()
Windows 系统上的功能)的说明,请参阅 第 12.1 节 “应用程序日志”。
有关将日志记录信息作为详细输出发送到控制台的说明,请参阅 第 12.2 节 “详细输出”。
有关将交互式 SQL 语句发送到系统日志记录工具的说明,请参见第 12.3 节 “用户 SQL 语句的系统日志记录”。
有关激活 AdminAPI 操作执行的 SQL 语句日志记录的说明,请参阅 第 12.5 节 “记录 AdminAPI 操作”。