MySQL路由器8.0  / 第 5 章 MySQL Router 应用  /  5.2 使用日志功能

5.2 使用日志功能

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

[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 机制也可以轮转Router 的日志文件 。 轮转后,路由器将收到重新打开日志文件的通知,这是通过将 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。仅当大小大于 10MB 时,才会根据当前 mysqlrouter.log 文件的大小触发轮换。假设此配置保存为 /etc/mysqlrouter/logrotate.conf,它可能会定期执行(添加到 cron),如下所示:

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