您可以将 MySQL Shell 命令或实用程序执行的所有 SQL 语句记录到 MySQL Shell 日志文件。
logSql
如果 dba.logSql
已禁用,则替换 dba.logSql
,logSql
优先。但是,如果 dba.logSql
已启用,它优先于 logSql
,但仅适用于 dba.*
上下文中的日志消息。
应用程序日志级别必须设置为至少 INFO (5)
,以便将这些消息写入 MySQL Shell 日志。
可以使用以下方法之一启用、禁用或更改 MySQL Shell SQL 日志记录
命令行:
--log-sql=
在您的 MySQL Shell 启动命令中。logOption
-
MySQL Shell 配置选项:
shell.options['logSql']='
在您的 MySQL Shell 会话期间。logOption
'
以下选项可用
- off
不记录任何 MySQL Shell SQL 语句。
- error
(默认) 仅记录 MySQL Shell 失败的 SQL 语句。
- on
记录所有 MySQL Shell SQL 语句,除了与
logSql.ignorePattern
和logSql.ignorePatternUnsafe
中定义的忽略模式匹配的语句。有关更多信息,请参见 过滤 SQL 日志记录。- all
记录所有 MySQL Shell SQL 语句,除了与
logSql.ignorePatternUnsafe]
中定义的忽略模式匹配的语句。有关更多信息,请参见 过滤 SQL 日志记录。- unfiltered
记录所有 MySQL Shell 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.createCluster
或Cluster.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