您可以将 MySQL Shell 命令或实用程序执行的所有 SQL 语句记录到 MySQL Shell 日志文件中。
logSql
如果 dba.logSql
已禁用,则会替换 dba.logSql
,logSql
优先。但是,如果 dba.logSql
已启用,它将优先于 logSql
,但仅限于 dba.*
上下文中的日志消息。
应用程序日志级别必须设置为至少 INFO (5)
,才能将这些消息写入 MySQL Shell 日志。
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.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