MySQL Router 8.4  /  MySQL Router 應用程式  /  使用記錄功能

5.2 使用記錄功能

記錄功能對於開發和測試您的應用程式以及部署 MySQL Router 非常方便。若要使用記錄功能,請在設定檔中名為 [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:包含在 Router 的原始程式碼內部產生的訊息,用於診斷。DEBUG 提供關於 Router 內部運作的詳細資訊。雖然應用程式可能不感興趣,但如果您遇到問題或 Router 的行為不如預期,使用 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:

記錄輪換

Router 支援記錄輪換;此處列出範例實作的案例。

注意

此功能在 Windows 上不受支援。

隨需輪換

隨需記錄輪換可以透過兩個步驟完成:重新命名記錄檔,然後通知 Router 讓其建立並切換到新的記錄檔。

直接從系統 Shell 或從可以作為排程工作自動呼叫的腳本執行記錄輪換。例如

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

logrotate

logrotate 機制也可以輪換 Router 的記錄檔。輪換之後,將會通知 Router 重新開啟記錄檔,這可以透過將 HUP 傳送到 Router 處理程序來完成。範例 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