您在 MySQL Shell 的 SQL 模式下发出的 SQL 语句可以发送到操作系统的系统日志记录工具。在 Unix 上,这是 syslog
;在 Windows 上,它是 Windows 事件日志。记录的消息显示在何处取决于系统。在 Linux 上,目标通常是 /var/log/messages
文件。
当您为 SQL 语句激活系统日志记录时,以下项目将写入系统日志记录工具
您在 MySQL Shell 的 SQL 模式下交互式发出的 SQL 语句。
您在 MySQL Shell 的 JavaScript 或 Python 模式下通过在
\sql
命令后立即输入它们来执行的单个 SQL 语句。您在 MySQL Shell 的 SQL 模式下交互式发出的
\source
命令的实例。
以下项目被排除在外,不会写入系统日志记录工具
您使用
\source
命令执行的脚本文件的内容。只有\source
命令本身才会写入系统日志记录工具。MySQL Shell 在 AdminAPI 操作过程中自己执行的 SQL 语句。您可以将这些语句记录到 MySQL Shell 应用程序日志文件中,如第 12.4 节 “MySQL Shell SQL 日志记录”中所述。
将从 MySQL Shell 代码历史记录中排除的 SQL 语句,如 MySQL Shell 配置选项
history.sql.ignorePattern
或--histignore
命令行选项(仅为当前会话设置history.sql.ignorePattern
的值)所指定。
要将您在 MySQL Shell 的 SQL 模式下发出的 SQL 语句发送到操作系统的系统日志记录工具,请选择以下选项之一
在启动 MySQL Shell 时使用
--syslog
命令行选项。使用 MySQL Shell
\option
命令设置history.sql.syslog
MySQL Shell 配置选项。有关使用此命令的说明,请参见第 13.4 节 “配置 MySQL Shell 选项”。使用
shell.options
对象设置history.sql.syslog
MySQL Shell 配置选项。有关使用此配置接口的说明,请参见第 13.4 节 “配置 MySQL Shell 选项”。
仅当 MySQL Shell 在交互模式下启动时(即正常启动或使用 --interactive
选项启动),才会对 SQL 语句进行系统日志记录。如果在启动时使用 --execute
或 --file
选项以批处理模式运行 mysqlsh
来处理命令或文件,则不会进行系统日志记录。
SQL 语句的日志消息格式化为一系列由空格字符分隔的键值对。键值对如下所示
- SYSTEM_USER =
操作系统用户的登录名,如果此用户名未知,则为
--
。- MYSQL_USER =
MySQL 用户的名称,如果此用户名未知,则为
--
。- CONNECTION_ID =
MySQL Shell 连接的标识符。
- DB_SERVER =
服务器的主机名,如果主机名未知,则为
--
。- DB =
默认数据库,如果未选择数据库,则为
--
。- QUERY =
记录的 SQL 语句的文本。
如果日志消息超过 1024 字节,则将其截断为 1024 字节。
以下是在 Linux 上使用 --syslog
生成的输出示例。此输出的格式是为了便于阅读;每个记录的消息实际上都占一行。
Mar 1 17:35:33 myhost mysqlsh[33060]:
SYSTEM_USER=hanna_j MYSQL_USER=hanna
CONNECTION_ID=14 DB_SERVER=localhost DB='--'
QUERY='create table test.test (c int, my_row_id BIGINT AUTO_INCREMENT INVISIBLE PRIMARY KEY);'