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

12.4 MySQL Shell SQL 日志记录

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

笔记

logSqldba.logSql如果dba.logSql 禁用,则替换 ,logSql优先。但是,如果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'

以下选项可用:

离开

没有记录 MySQL Shell SQL 语句。

错误

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

记录所有 MySQL Shell SQL 语句,除了那些与 shell.options['log.Sql.ignorePattern']. 有关详细信息,请参阅过滤 SQL 日志记录

未经过滤的

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

过滤 SQL 日志记录

使用由 指定的以冒号分隔的 glob 模式列表过滤日志 shell.options['logSql.ignorePattern']。默认过滤器是 SELECT*:SHOW*:*IDENTIFIED*:*PASSWORD*. 此过滤器忽略所有使用 SELECT、SHOW、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

潮汐

MySQL 线程 ID。

数据库

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

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

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