可以讓 mysqld 將錯誤日誌寫入系統日誌(Windows 上的事件記錄檔,以及 Unix 和類 Unix 系統上的 syslog
)。
本節說明如何使用內建篩選器 log_filter_internal
和系統日誌接收器 log_sink_syseventlog
設定錯誤記錄,以立即生效並用於後續伺服器啟動。如需設定錯誤記錄的一般資訊,請參閱第 7.4.2.1 節,「錯誤日誌設定」。
若要啟用系統日誌接收器,請先載入接收器元件,然後修改 log_error_services
值
INSTALL COMPONENT 'file://component_log_sink_syseventlog';
SET PERSIST log_error_services = 'log_filter_internal; log_sink_syseventlog';
若要設定 log_error_services
在伺服器啟動時生效,請使用第 7.4.2.1 節,「錯誤日誌設定」的指示。這些指示也適用於其他錯誤記錄系統變數。
將錯誤記錄寫入系統日誌可能需要額外的系統設定。請參閱您平台的系統日誌文件。
在 Windows 上,寫入應用程式日誌中事件記錄檔的錯誤訊息具有這些特性
標示為
Error
、Warning
和Note
的項目會寫入事件記錄檔,但個別儲存引擎的資訊陳述式等訊息則不會寫入。事件記錄檔項目的來源為
MySQL
(或如果syseventlog.tag
定義為tag
,則為MySQL-
)。tag
在 Unix 和類 Unix 系統上,記錄到系統日誌會使用 syslog
。下列系統變數會影響 syslog
訊息
syseventlog.facility
:syslog
訊息的預設設施為daemon
。設定此變數以指定不同的設施。syseventlog.include_pid
:是否在每行syslog
輸出中包含伺服器程序 ID。syseventlog.tag
:此變數定義一個標籤,將其加入syslog
訊息中的伺服器識別碼 (mysqld
)。如果已定義,標籤會附加到識別碼,並以連字號作為前導。
MySQL 對於關於非錯誤狀況的重要系統訊息,例如啟動、關閉以及設定的某些重大變更,會使用自訂標籤 「系統」。在不支援自訂標籤的日誌中,包括 Windows 上的事件記錄檔,以及 Unix 和類 Unix 系統上的 syslog
,系統訊息會被指派用於資訊優先級別的標籤。然而,即使 MySQL 的 log_error_verbosity
設定通常會排除資訊級別的訊息,這些訊息仍會列印到日誌中。
當日誌接收器必須以 「資訊」的標籤來取代 「系統」的標籤時,且日誌事件在 MySQL 伺服器之外進一步處理(例如,由 syslog
組態篩選或轉送),這些事件預設可能被次要應用程式處理為 「資訊」優先級,而不是 「系統」優先級。