預定用於錯誤日誌的錯誤事件包含一組欄位,每個欄位都包含一個鍵/值配對。事件欄位可以分類為核心、選用或使用者定義
核心欄位會自動為錯誤事件設定。但是,無法保證其在事件處理期間的出現,因為核心欄位(與任何類型的欄位一樣)可能會被日誌篩選器取消設定。如果發生這種情況,則該欄位無法在該篩選器內的後續處理中,以及在篩選器之後執行的元件(例如日誌接收器)找到。
選用欄位通常不存在,但對於某些事件類型可能會存在。當存在時,選用欄位會根據需要和可用性提供額外的事件資訊。
使用者定義欄位是任何名稱未定義為核心或選用欄位的欄位。使用者定義欄位在日誌篩選器建立之前不存在。
如前述說明所暗示,任何給定欄位在事件處理期間都可能不存在,原因可能是它一開始就不存在,或者被篩選器捨棄。對於日誌接收器,欄位不存在的效果取決於接收器。例如,接收器可能會從日誌訊息中省略該欄位、指示該欄位遺失或替換為預設值。如有疑問,請測試:使用取消設定該欄位的篩選器,然後檢查日誌接收器對其執行什麼操作。
以下章節說明核心和選用錯誤事件欄位。對於個別日誌篩選器元件,這些欄位可能會有其他特定於篩選器的考量,或者篩選器可能會新增此處未列出的使用者定義欄位。如需詳細資訊,請參閱特定篩選器的文件。
這些錯誤事件欄位是核心欄位
time
事件時間戳記,精確到微秒。
msg
事件訊息字串。
prio
事件優先順序,用於指示系統、錯誤、警告或注意/資訊事件。此欄位對應於
syslog
中的嚴重性。下表顯示可能的優先順序層級。事件類型 數值優先順序 系統事件 0 錯誤事件 1 警告事件 2 注意/資訊事件 3 prio
值是數值。與它相關,錯誤事件也可能包含一個選用的label
欄位,表示優先順序為字串。例如,prio
值為 2 的事件可能具有label
值'Warning'
。篩選器元件可能會根據優先順序包含或捨棄錯誤事件,但系統事件是強制性的且不能捨棄。
一般而言,訊息優先順序的判斷方式如下
情況或事件是否可採取行動?
是:情況或事件是否可忽略?
是:優先順序為警告。
否:優先順序為錯誤。
否:情況或事件是否為強制性?
是:優先順序為系統。
否:優先順序為注意/資訊。
err_code
事件錯誤代碼,以數字表示(例如,
1022
)。err_symbol
事件錯誤符號,以字串表示(例如,
'ER_DUP_KEY'
)。SQL_state
事件 SQLSTATE 值,以字串表示(例如,
'23000'
)。subsystem
發生事件的子系統。可能的值為
InnoDB
(InnoDB
儲存引擎)、Repl
(複寫子系統)、Server
(其他)。
選用錯誤事件欄位分為以下幾類
關於錯誤的其他資訊,例如作業系統發出的錯誤或錯誤標籤
OS_errno
作業系統錯誤編號。
OS_errmsg
作業系統錯誤訊息。
label
對應於
prio
值的標籤,以字串表示。
識別發生事件的用戶端
user
用戶端使用者。
host
用戶端主機。
thread
負責產生錯誤事件的 mysqld 內的執行緒 ID。此 ID 表示伺服器的哪個部分產生了事件,並且與包含連線執行緒 ID 的一般查詢日誌和慢查詢日誌訊息一致。
query_id
查詢 ID。
除錯資訊
source_file
發生事件的原始碼檔案,不包含任何前導路徑。
source_line
發生事件的原始碼檔案中的行號。
function
發生事件的函式。
component
發生事件的元件或外掛程式。