MySQL Router 9.0  /  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