文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  預設錯誤日誌目的地設定

7.4.2.2 預設錯誤日誌目的地設定

本節說明哪些伺服器選項設定預設錯誤日誌目的地,可以是主控台或具名檔案。它也指出哪些日誌接收器元件會將它們自己的輸出目的地設為預設目的地。

在本文中,「主控台」表示 stderr,即標準錯誤輸出。這會是您的終端機或主控台視窗,除非標準錯誤輸出已重新導向至不同的目的地。

伺服器會以稍微不同的方式解譯 Windows 和 Unix 系統上決定預設錯誤日誌目的地的選項。請務必使用適用於您平台的資訊來設定目的地。在伺服器解譯預設錯誤日誌目的地選項之後,它會設定 log_error 系統變數,以指出預設目的地,這會影響數個日誌接收器元件寫入錯誤訊息的位置。以下各節會說明這些主題。

Windows 上的預設錯誤日誌目的地

在 Windows 上,mysqld 使用 --log-error--pid-file--console 選項來判斷預設錯誤日誌目的地是主控台還是檔案,如果是檔案,則為檔案名稱。

  • 如果指定 --console,則預設目的地是主控台。(如果同時指定 --console--log-error--console 的優先順序高於 --log-error,並且下列關於 --log-error 的項目不適用。)

  • 如果未指定 --log-error 或指定時未命名檔案,則預設目的地是資料目錄中名為 主機名稱.err 的檔案,除非指定 --pid-file 選項。在這種情況下,檔案名稱是 PID 檔案基本名稱,在資料目錄中具有 .err 後綴。

  • 如果使用 --log-error 指定檔案名稱,預設的目標位置將會是該檔案(如果名稱沒有副檔名,則會加上 .err 副檔名)。檔案位置位於資料目錄下,除非您提供絕對路徑名稱以指定不同的位置。

如果預設的錯誤日誌目標位置是主控台,伺服器會將 log_error 系統變數設定為 stderr。否則,預設的目標位置是檔案,伺服器會將 log_error 設定為檔案名稱。

在 Unix 和類 Unix 系統上的預設錯誤日誌目標位置

在 Unix 和類 Unix 系統上,mysqld 使用 --log-error 選項來判斷預設的錯誤日誌目標位置是主控台還是檔案,如果是檔案,則判斷檔案名稱。

  • 如果沒有指定 --log-error,預設的目標位置是主控台。

  • 如果指定了 --log-error 但沒有指定檔案名稱,預設的目標位置是資料目錄中名為 主機名稱.err 的檔案。

  • 如果使用 --log-error 指定檔案名稱,預設的目標位置將會是該檔案(如果名稱沒有副檔名,則會加上 .err 副檔名)。檔案位置位於資料目錄下,除非您提供絕對路徑名稱以指定不同的位置。

  • 如果在 [mysqld][server][mysqld_safe] 區段中的選項檔案中指定了 --log-error,在使用 mysqld_safe 啟動伺服器的系統上,mysqld_safe 會找到並使用該選項,並將其傳遞給 mysqld

注意

Yum 或 APT 套件安裝通常會將錯誤日誌檔案位置設定在 /var/log 下,並在伺服器設定檔中使用類似 log-error=/var/log/mysqld.log 的選項。從選項中移除路徑名稱會導致使用資料目錄中的 主機名稱.err 檔案。

如果預設的錯誤日誌目標位置是主控台,伺服器會將 log_error 系統變數設定為 stderr。否則,預設的目標位置是檔案,伺服器會將 log_error 設定為檔案名稱。

預設錯誤日誌目標位置如何影響日誌接收器

伺服器解譯錯誤日誌目標位置設定選項後,會設定 log_error 系統變數來指示預設的錯誤日誌目標位置。日誌接收器元件可能會根據 log_error 的值來決定其自身的輸出目標位置,或者獨立於 log_error 來決定其目標位置。

如果 log_errorstderr,預設的錯誤日誌目標位置是主控台,且基於預設目標位置的日誌接收器也會寫入主控台。

  • log_sink_internallog_sink_jsonlog_sink_test:這些接收器會寫入主控台。即使對於可以多次啟用的接收器(例如 log_sink_json)也是如此;所有實例都會寫入主控台。

  • log_sink_syseventlog:無論 log_error 的值為何,此接收器都會寫入系統日誌。

如果 log_error 不是 stderr,預設的錯誤日誌目標位置是檔案,且 log_error 指示檔案名稱。基於預設目標位置的日誌接收器,其輸出檔案命名會根據該檔案名稱。(接收器可能會使用確切的名稱,或者使用該名稱的變體。)假設 log_error 的值為 檔案名稱。則日誌接收器會以這種方式使用該名稱:

  • log_sink_internallog_sink_test:這些接收器會寫入 檔案名稱

  • log_sink_json:在 log_error_services 值中命名的此接收器的連續實例會寫入名為 檔案名稱 加上編號的 .NN.json 副檔名的檔案:檔案名稱.00.json檔案名稱.01.json,依此類推。

  • log_sink_syseventlog:無論 log_error 的值為何,此接收器都會寫入系統日誌。