文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  基於優先順序的錯誤日誌篩選 (log_filter_internal)

7.4.2.5 基於優先順序的錯誤日誌篩選 (log_filter_internal)

log_filter_internal 日誌篩選組件實作一種基於錯誤事件優先順序和錯誤碼的簡單日誌篩選形式。若要影響 log_filter_internal 如何允許或抑制預定用於錯誤日誌的錯誤、警告和資訊事件,請設定 log_error_verbositylog_error_suppression_list 系統變數。

log_filter_internal 是內建的且預設為啟用。如果停用此篩選器,log_error_verbositylog_error_suppression_list 不會生效,因此必須在需要時使用另一個篩選服務執行篩選 (例如,在使用 log_filter_dragnet 時使用個別篩選規則)。如需篩選器設定的資訊,請參閱 第 7.4.2.1 節「錯誤日誌設定」

詳細程度篩選

預定用於錯誤日誌的事件具有 ERRORWARNINGINFORMATION 的優先順序。log_error_verbosity 系統變數根據允許寫入日誌的訊息優先順序控制詳細程度,如下表所示。

log_error_verbosity 值 允許的訊息優先順序
1 錯誤
2 ERRORWARNING
3 ERRORWARNINGINFORMATION

如果 log_error_verbosity 為 2 或更大,伺服器會記錄關於不安全以陳述式為基礎的日誌記錄的陳述式訊息。如果值為 3,伺服器會記錄關於新連線嘗試的已中止連線和拒絕存取錯誤。請參閱 第 B.3.2.9 節「通訊錯誤和中止的連線」

如果您使用複寫,建議使用 log_error_verbosity 值為 2 或更大,以取得有關正在發生的情況的更多資訊,例如有關網路故障和重新連線的訊息。

如果複本上的 log_error_verbosity 為 2 或更大,複本會在錯誤日誌中列印訊息,以提供有關其狀態的資訊,例如它開始工作的二進位日誌和中繼日誌座標、何時切換到另一個中繼日誌、何時在斷線後重新連線等等。

還有一個訊息優先順序為 SYSTEM,不受詳細程度篩選的限制。關於非錯誤情況的系統訊息會列印到錯誤日誌,無論 log_error_verbosity 值為何。這些訊息包括啟動和關閉訊息,以及對設定的一些重大變更。

在 MySQL 錯誤日誌中,系統訊息會標示為 System。其他日誌接收器可能遵循也可能不遵循相同的慣例,並且在產生的日誌中,系統訊息可能會被指派為資訊優先等級所使用的標籤,例如 NoteInformation。如果您根據訊息的標籤對日誌記錄套用任何額外的篩選或重新導向,系統訊息不會覆蓋您的篩選器,而是會像處理其他訊息一樣被處理。

抑制清單篩選

log_error_suppression_list 系統變數適用於預定寫入錯誤日誌的事件,並指定當事件發生時優先級為 WARNINGINFORMATION 時要抑制哪些事件。例如,如果特定類型的警告被認為是錯誤日誌中不想要的 雜訊,因為它經常發生但並不重要,則可以將其抑制。log_error_suppression_list 不會抑制優先級為 ERRORSYSTEM 的訊息。

log_error_suppression_list 的值可以是空字串(表示不抑制),或是一個或多個以逗號分隔的值的清單,表示要抑制的錯誤代碼。錯誤代碼可以用符號形式或數字形式指定。數字代碼可以使用或不使用 MY- 前綴指定。數字部分的前導零不重要。允許的代碼格式範例如下

ER_SERVER_SHUTDOWN_COMPLETE
MY-000031
000031
MY-31
31

為了可讀性和可移植性,符號值比數值更佳。

雖然要抑制的代碼可以用符號形式或數字形式表示,但每個代碼的數值必須在允許的範圍內

  • 1 到 999:伺服器和客戶端使用的全域錯誤代碼。

  • 10000 及更高:旨在寫入錯誤日誌(不發送給客戶端)的伺服器錯誤代碼。

此外,指定的每個錯誤代碼必須實際被 MySQL 使用。嘗試指定不在允許範圍內或在允許範圍內但未被 MySQL 使用的代碼會產生錯誤,並且 log_error_suppression_list 的值保持不變。

有關錯誤代碼範圍以及每個範圍內定義的錯誤符號和數字的資訊,請參閱 第 B.1 節,「錯誤訊息來源和元素」,以及 MySQL 8.4 錯誤訊息參考

伺服器可以針對給定的錯誤代碼產生不同優先級的訊息,因此抑制與 log_error_suppression_list 中列出的錯誤代碼相關聯的訊息取決於其優先級。假設該變數的值為 'ER_PARSER_TRACE,MY-010001,10002'。則 log_error_suppression_list 對於這些代碼的訊息具有以下影響

  • WARNINGINFORMATION 優先級產生的訊息將被抑制。

  • ERRORSYSTEM 優先級產生的訊息不會被抑制。

詳細程度和抑制清單的交互作用

log_error_verbosity 的效果與 log_error_suppression_list 的效果結合。考慮一個使用以下設定啟動的伺服器

[mysqld]
log_error_verbosity=2     # error and warning messages only
log_error_suppression_list='ER_PARSER_TRACE,MY-010001,10002'

在這種情況下,log_error_verbosity 允許 ERRORWARNING 優先級的訊息,並捨棄 INFORMATION 優先級的訊息。在未捨棄的訊息中,log_error_suppression_list 捨棄 WARNING 優先級和任何指定的錯誤代碼的訊息。

注意

範例中顯示的 log_error_verbosity 值 2 也是其預設值,因此此變數對 INFORMATION 訊息的影響就像預設情況下所描述的那樣,而無需顯式設定。如果您希望 log_error_suppression_list 影響 INFORMATION 優先級的訊息,則必須將 log_error_verbosity 設定為 3。

考慮一個使用以下設定啟動的伺服器

[mysqld]
log_error_verbosity=1     # error messages only

在這種情況下,log_error_verbosity 允許 ERROR 優先級的訊息,並捨棄 WARNINGINFORMATION 優先級的訊息。設定 log_error_suppression_list 沒有任何影響,因為由於 log_error_verbosity 設定,它可能抑制的所有錯誤代碼都已被捨棄。