MySQL Shell 9.0  /  MySQL Shell 日志记录和调试  /  MySQL Shell SQL 日志记录

12.4 MySQL Shell SQL 日志记录

您可以将 MySQL Shell 命令或实用程序执行的所有 SQL 语句记录到 MySQL Shell 日志文件。

注意

logSql 如果 dba.logSql 已禁用,则替换 dba.logSqllogSql 优先。但是,如果 dba.logSql 已启用,它优先于 logSql,但仅适用于 dba.* 上下文中的日志消息。

应用程序日志级别必须设置为至少 INFO (5),以便将这些消息写入 MySQL Shell 日志。

SQL 日志记录选项

可以使用以下方法之一启用、禁用或更改 MySQL Shell SQL 日志记录

  • 命令行:--log-sql=logOption 在您的 MySQL Shell 启动命令中。

  • MySQL Shell 配置选项:shell.options['logSql']='logOption' 在您的 MySQL Shell 会话期间。

以下选项可用

off

不记录任何 MySQL Shell SQL 语句。

error

(默认) 仅记录 MySQL Shell 失败的 SQL 语句。

on

记录所有 MySQL Shell SQL 语句,除了与 logSql.ignorePatternlogSql.ignorePatternUnsafe 中定义的忽略模式匹配的语句。有关更多信息,请参见 过滤 SQL 日志记录

all

记录所有 MySQL Shell SQL 语句,除了与 logSql.ignorePatternUnsafe] 中定义的忽略模式匹配的语句。有关更多信息,请参见 过滤 SQL 日志记录

unfiltered

记录所有 MySQL Shell SQL 语句,不执行任何过滤。

过滤 SQL 日志记录

日志使用冒号分隔的 glob 模式列表进行过滤。以下选项可用

  • logSql.ignorePattern:此选项定义冒号分隔的语句模式列表以过滤掉。默认值为 *SELECT*:*SHOW*

  • logSql.ignorePatternUnsafe:此选项定义冒号分隔的语句模式列表以过滤掉。默认值为 *IDENTIFIED*:*PASSWORD*

有关使用 shell.options 的信息,请参见 第 13.4 节,“配置 MySQL Shell 选项”

日志格式

日志消息使用以下格式

Date&Time: LogLevel: LogContext: tid= : SQL:
日期和时间

日志消息的日期和时间。

日志级别

日志级别。有关日志级别的更多信息,请参见 表 12.1,“MySQL Shell 中的日志记录级别”

所有成功的 SQL 语句和不成功语句的错误消息都以 INFO 日志级别记录。

日志上下文

日志消息的来源。可以是以下值之一

  • main:基本 MySQL Shell 上下文。

  • sql:SQL 模式上下文。

  • js:JavaScript 模式上下文。

  • py:Python 模式上下文。

  • object.method:全局对象方法上下文。例如,Dba.createClusterCluster.status

tid

MySQL 线程 ID。

SQL

记录的 SQL 语句或错误消息。

以下示例显示了具有 Dba.deploySandboxInstance 上下文的 SQL INFO 消息

        2022-06-17 15:06:00: Info: Dba.deploySandboxInstance: tid=9: SQL: SET SESSION `autocommit` = 1