本節說明哪些伺服器選項會設定預設錯誤日誌目的地,它可以是主控台或具名檔案。它也指出哪些日誌接收器元件會將自己的輸出目的地設定為預設目的地。
在本討論中,「主控台」是指 stderr
,標準錯誤輸出。這是您的終端機或主控台視窗,除非標準錯誤輸出已重新導向至不同的目的地。
伺服器會針對 Windows 和 Unix 系統以稍微不同的方式解譯決定預設錯誤日誌目的地的選項。請務必使用適用於您平台的資訊來設定目的地。在伺服器解譯預設錯誤日誌目的地選項之後,它會設定 log_error
系統變數以指示預設目的地,這會影響數個日誌接收器元件寫入錯誤訊息的位置。下列章節將探討這些主題。
在 Windows 上,mysqld 使用 --log-error
、--pid-file
和 --console
選項來決定預設錯誤日誌目的地是主控台還是檔案,如果是檔案,則決定檔案名稱。
如果給定
--console
,則預設目的地是主控台。(如果同時給定--console
和--log-error
,則--console
優先,而以下關於--log-error
的項目不適用。)如果未給定
--log-error
或給定但未命名檔案,則預設目的地是資料目錄中名為
的檔案,除非指定host_name
.err--pid-file
選項。在這種情況下,檔案名稱是 PID 檔案基本名稱,在資料目錄中附加.err
後綴。如果給定
--log-error
來命名檔案,則預設目的地是該檔案(如果名稱沒有後綴,則會新增.err
後綴)。檔案位置位於資料目錄下,除非給定絕對路徑名稱以指定不同的位置。
如果預設錯誤日誌目的地是主控台,則伺服器會將 log_error
系統變數設定為 stderr
。否則,預設目的地是檔案,且伺服器會將 log_error
設定為檔案名稱。
在 Unix 和類 Unix 系統上,mysqld 使用 --log-error
選項來決定預設錯誤日誌目的地是主控台還是檔案,如果是檔案,則決定檔案名稱。
如果未給定
--log-error
,則預設目的地是主控台。如果給定
--log-error
選項而未指定檔案名稱,預設目的地將會是資料目錄中名為
的檔案。host_name
.err如果給定
--log-error
來命名檔案,則預設目的地是該檔案(如果名稱沒有後綴,則會新增.err
後綴)。檔案位置位於資料目錄下,除非給定絕對路徑名稱以指定不同的位置。如果
--log-error
選項在選項檔案的[mysqld]
、[server]
或[mysqld_safe]
區段中指定,在那些使用 mysqld_safe 來啟動伺服器的系統上,mysqld_safe 會找到並使用該選項,並將其傳遞給 mysqld。
Yum 或 APT 套件安裝通常會設定錯誤日誌檔案位置在 /var/log
下,並在伺服器設定檔中使用類似 log-error=/var/log/mysqld.log
的選項。從選項中移除路徑名稱會導致使用資料目錄中的
檔案。host_name
.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
的值為 file_name
。然後,日誌接收器會像這樣使用該名稱:
log_sink_internal
、log_sink_test
:這些接收器會寫入file_name
。log_sink_json
:在log_error_services
值中命名的此接收器的連續實例會寫入名為file_name
加上編號的.
字尾的檔案:NN
.json
、file_name
.00.json
,依此類推。file_name
.01.jsonlog_sink_syseventlog
:此接收器會寫入系統日誌,無論log_error
的值為何。