預定用於錯誤日誌的錯誤事件包含一組欄位,每個欄位都由鍵/值對組成。事件欄位可以分類為核心、選用或使用者定義
核心欄位會針對錯誤事件自動設定。但是,無法保證在事件處理期間事件中是否存在核心欄位,因為核心欄位與任何類型的欄位一樣,可能會被日誌篩選器取消設定。如果發生這種情況,篩選器內以及篩選器後執行的組件(例如日誌接收器)無法找到該欄位。
選用欄位通常不存在,但可能存在於某些事件類型中。存在時,選用欄位會視需要和可用時提供其他事件資訊。
使用者定義欄位是任何名稱尚未定義為核心或選用欄位的欄位。使用者定義欄位在日誌篩選器建立之前不存在。
如上述說明所暗示,任何給定的欄位在事件處理期間都可能不存在,原因可能是它一開始就不存在,或者被篩選器捨棄。對於日誌接收器,欄位不存在的影響是特定於接收器的。例如,接收器可能會從日誌訊息中省略該欄位、指出該欄位遺失或取代預設值。如有疑問,請測試:使用取消設定該欄位的篩選器,然後檢查日誌接收器如何處理該欄位。
以下章節說明核心和選用錯誤事件欄位。對於個別日誌篩選器組件,這些欄位可能會有其他特定於篩選器的考量,或者篩選器可能會新增此處未列出的使用者定義欄位。如需詳細資訊,請參閱特定篩選器的文件。
這些錯誤事件欄位是核心欄位
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
事件發生的元件或外掛程式。