MySQL NDB Cluster API 開發者指南  /  ...  /  日誌事件函式

3.2.1 日誌事件函式

本節提供有關用於監聽日誌事件的 MGM API 函式的資訊。

ndb_mgm_listen_event()

描述

此函式用於監聽日誌事件,這些事件是從傳回的檔案描述符讀取的。事件使用基於文字的格式,與叢集日誌中的格式相同。

ndb_mgm_listen_event() 不支援 TLS。您可以使用 ndb_mgm_create_logevent_handle(),此函式有支援。

簽章
int ndb_mgm_listen_event
    (
      NdbMgmHandle handle,
      const int    filter[]
    )
參數

此函式接受兩個引數

  • 一個 NdbMgmHandle handle

  • 一個 filter,其中包含一系列 {level, ndb_mgm_event_category} 配對(在單一陣列中),這些配對會推送到檔案描述符。使用 0 作為層級來終止清單。

傳回值

要從中讀取事件的檔案描述符。

ndb_mgm_create_logevent_handle()

描述

此函式用於建立日誌事件處理。

簽章
NdbLogEventHandle ndb_mgm_create_logevent_handle
    (
      NdbMgmHandle handle,
      const int    filter[]
    )
參數

此函式接受兩個引數

  • 一個 NdbMgmHandle handle

  • 一個 filter,其中包含一系列 {level, ndb_mgm_event_category} 配對(在單一陣列中),這些配對會推送到檔案描述符。使用 0 作為層級來終止清單。

傳回值

一個日誌事件處理。

ndb_mgm_destroy_logevent_handle()

描述

當不再需要日誌事件處理時,請使用此函式來銷毀它。

簽章
void ndb_mgm_destroy_logevent_handle
    (
      NdbLogEventHandle* handle
    )
參數

指向日誌事件 handle 的指標。

傳回值

.

ndb_logevent_get_fd()

描述

此函式從 NdbMgmLogEventHandle 擷取檔案描述符;此描述符可用於(例如)應用程式 select() 呼叫中。

警告

請勿嘗試從此函式傳回的檔案描述符讀取;這可能會導致描述符損毀。

簽章
int ndb_logevent_get_fd
    (
      const NdbLogEventHandle handle
    )
參數

一個 LogEventHandle

傳回值

一個檔案描述符。如果失敗,則傳回 -1

ndb_logevent_get_next()

描述

此函式用於擷取下一個日誌事件,並使用事件中的資料來填入提供的 ndb_logevent 結構。

簽章
int ndb_logevent_get_next
    (
      const NdbLogEventHandle handle,
      struct ndb_logevent*    logevent,
      unsigned                timeout
    )
重要事項

日誌事件的 ndb_mgm_event_category 會轉換為 enum 型別。對於不執行此轉換的等效函式,請改用 ndb_logevent_get_next2()

參數

此函式需要三個參數

  • 一個 NdbLogEventHandle

  • 一個指向 ndb_logevent 資料結構的指標

  • 在逾時之前等待事件的毫秒數;為此參數傳遞 0 會導致函式封鎖,直到收到下一個日誌事件

傳回值

此函式傳回的值解譯如下:如果傳回值小於或等於零,則 logevent 不會以任何方式更改或受到影響。

  • > 0:事件存在,並且其資料已擷取到 logevent

  • 0:在等待事件時發生逾時(經過的時間超過 timeout 毫秒)

  • < 0:發生錯誤。

ndb_logevent_get_next2()

描述

此函式用於擷取下一個日誌事件,並使用事件中的資料來填入提供的 ndb_logevent 結構。

ndb_logevent_get_next2() 修正了 ndb_logevent_get_next() 函式處理結構 ndb_mgm_event_category 的方式,適用於不需要向後相容性的應用程式。否則,它與 ndb_logevent_get_next() 相同。

簽章
int ndb_logevent_get_next2
    (
      const NdbLogEventHandle handle,
      struct ndb_logevent*    logevent,
      unsigned                timeout
    )
參數

此函式需要三個參數

  • 一個 NdbLogEventHandle

  • 一個指向 ndb_logevent 資料結構的指標

  • 在逾時之前等待事件的毫秒數;為此參數傳遞 0 會導致函式封鎖,直到收到下一個日誌事件

傳回值

此函式傳回的值解譯如下:如果傳回值小於或等於零,則 logevent 不會以任何方式更改或受到影響。

  • > 0:事件存在,並且其資料已擷取到 logevent

  • 0:在等待事件時發生逾時(經過的時間超過 timeout 毫秒)

  • < 0:發生錯誤。

ndb_logevent_get_latest_error()

描述

此函式會從最近的錯誤擷取錯誤碼。

注意

您可能會偏好改用 ndb_logevent_get_latest_error_msg()。請參閱 ndb_logevent_get_latest_error_msg()

簽章
int ndb_logevent_get_latest_error
    (
      const NdbLogEventHandle handle
    )
參數

一個日誌事件處理。

傳回值

一個錯誤碼。

ndb_logevent_get_latest_error_msg()

描述

擷取嘗試讀取日誌事件時,最近發生的錯誤的文字。

簽章
const char* ndb_logevent_get_latest_error_msg
    (
      const NdbLogEventHandle handle
    )
參數

一個日誌事件處理。

傳回值

錯誤訊息的文字。