MySQL Shell 8.4  /  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 日志记录可以通过以下方式之一启用、禁用或更改

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

  • MySQL Shell 配置选项:在您的 MySQL Shell 会话中使用 shell.options['logSql']='logOption'

以下选项可用

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