本節說明哪些伺服器選項設定預設錯誤日誌目的地,可以是主控台或具名檔案。它也指出哪些日誌接收器元件會將它們自己的輸出目的地設為預設目的地。
在本文中,「“主控台”」表示 stderr
,即標準錯誤輸出。這會是您的終端機或主控台視窗,除非標準錯誤輸出已重新導向至不同的目的地。
伺服器會以稍微不同的方式解譯 Windows 和 Unix 系統上決定預設錯誤日誌目的地的選項。請務必使用適用於您平台的資訊來設定目的地。在伺服器解譯預設錯誤日誌目的地選項之後,它會設定 log_error
系統變數,以指出預設目的地,這會影響數個日誌接收器元件寫入錯誤訊息的位置。以下各節會說明這些主題。
在 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 系統上,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_error
是 stderr
,預設的錯誤日誌目標位置是主控台,且基於預設目標位置的日誌接收器也會寫入主控台。
log_sink_internal
、log_sink_json
、log_sink_test
:這些接收器會寫入主控台。即使對於可以多次啟用的接收器(例如log_sink_json
)也是如此;所有實例都會寫入主控台。log_sink_syseventlog
:無論log_error
的值為何,此接收器都會寫入系統日誌。
如果 log_error
不是 stderr
,預設的錯誤日誌目標位置是檔案,且 log_error
指示檔案名稱。基於預設目標位置的日誌接收器,其輸出檔案命名會根據該檔案名稱。(接收器可能會使用確切的名稱,或者使用該名稱的變體。)假設 log_error
的值為 檔案名稱
。則日誌接收器會以這種方式使用該名稱:
log_sink_internal
、log_sink_test
:這些接收器會寫入檔案名稱
。log_sink_json
:在log_error_services
值中命名的此接收器的連續實例會寫入名為檔案名稱
加上編號的.
副檔名的檔案:NN
.json
、檔案名稱
.00.json
,依此類推。檔案名稱
.01.jsonlog_sink_syseventlog
:無論log_error
的值為何,此接收器都會寫入系統日誌。