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