可以讓 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(或MySQL-,如果tagsyseventlog.tag定義為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 設定篩選或轉送),這些事件預設可能會由次要應用程式處理為具有 「資訊」優先順序而不是 「系統」優先順序。