MySQL 路由器 8.4  /  MySQL 路由器应用程序  /  使用日志记录功能

5.2 使用日志记录功能

日志记录功能对于开发和测试您的应用程序以及部署 MySQL 路由器很有用。要使用日志记录,请在名为 [logger] 的部分中,在配置文件中启用日志记录 level 选项。例如

[logger]
level = INFO

使用 logging_folder 选项设置日志文件的路径,该选项在配置文件中的 [DEFAULT] 部分中定义为目录路径。日志文件名为 mysqlrouter.log。例如

[DEFAULT]
# Logs are sent to /path/to/folder/mysqlrouter.log
logging_folder = /path/to/folder

[logger]
level = DEBUG

logging_folder 设置为空字符串会将日志发送到控制台(stdout)。

两个常见的日志级别是 INFO(默认)和 DEBUG

  • INFO:包含信息性消息,如上面所示,是默认设置。

  • DEBUG:包含在路由器源代码内部生成的用于诊断的消息。 DEBUG 提供有关路由器内部工作机制的详细的信息。虽然对于应用程序来说可能不感兴趣,但在您遇到问题或路由器没有按预期运行时,使用 DEBUG 可能会有所帮助。

以下示例显示了 DEBUG 日志级别下的消息外观;比较 INFODEBUG 消息

2019-04-07 18:25:56 INFO    [0x700009673000] Connections using ssl_mode 'PREFERRED'
2019-04-07 18:25:56 INFO    [0x700009673000] Connected with metadata server running on 127.0.0.1:3310
2019-04-07 18:25:56 DEBUG   [0x700009673000] Updating metadata information for cluster 'devCluster'
2019-04-07 18:25:56 DEBUG   [0x700009673000] Updating replicaset status from GR for 'default'
2019-04-07 18:25:56 DEBUG   [0x700009673000] Replicaset 'default' has 3 members in metadata, 3 in status table
2019-04-07 18:25:56 DEBUG   [0x700009673000] End updating replicaset for 'default'
2019-04-07 18:25:56 INFO    [0x700009673000] Changes detected in cluster 'devCluster' after metadata refresh
2019-04-07 18:25:56 INFO    [0x700009673000] Metadata for cluster 'devCluster' has 1 replicasets:

日志轮转

路由器支持日志轮转;以下是具有示例实现的场景。

注意

此功能在 Windows 上不受支持。

按需轮转

按需日志轮转可以通过两个步骤完成:重命名日志文件,然后通知路由器以便它创建并切换到新的日志文件。

直接从系统的 shell 或从脚本执行日志轮转,该脚本可以作为计划任务自动调用。例如

sudo mv /var/log/mysqlrouter/mysqlrouter.log /var/log/mysqlrouter/mysqlrouter.log.old
kill -HUP $(pidof mysqlrouter)

logrotate

logrotate 机制也可以轮转路由器的日志文件。轮转后,路由器将被通知重新打开日志文件,这可以通过向路由器进程发送 HUP 来实现。一个示例 logrotate 配置文件

/var/log/mysqlrouter/mysqlrouter.log {
    rotate 9
    size 10M
    create 0755 mysqlrouter mysqlrouter
    postrotate
    kill -HUP $(pidof mysqlrouter)
    endscript
}

此示例将日志轮转为 mysqlrouter.log、mysqlrouter.log.1、...、mysqlrouter.log.9。轮转将根据当前 mysqlrouter.log 文件的大小触发,前提是大小大于 10MB。假设此配置已保存为 /etc/mysqlrouter/logrotate.conf,它可以定期执行(添加到 cron)如下

[sudo] logrotate  /etc/mysqlrouter/logrotate.conf