檢視原始碼 alarm_handler (sasl v4.2.2)

警報處理程序

警報處理程序是一個 gen_event 事件管理程序,負責接收系統中的警報。此程序並非設計為完整的警報處理器,而是定義一個可以傳送警報的地方。啟動時,警報處理器會安裝一個簡單的事件處理器,但我們鼓勵使用者自行撰寫並安裝自己的處理器。

這個簡單的事件處理器會將所有警報以 info 報告的形式傳送到錯誤記錄器,並將所有警報儲存在一個列表中。此列表可以傳遞給之後安裝的使用者定義的事件處理器。如果產生大量警報,此列表可能會變得非常龐大。這也是建議安裝更好使用者定義處理器的好理由。

我們提供了設定和清除警報的函式。警報格式由使用者定義。例如,可以定義用於 SNMP 的事件處理器,以及警報管理資訊庫 (MIB)。

警報處理器是 SASL 應用程式的一部分。

為警報處理器撰寫新的事件處理器時,必須處理下列事件:

預設的簡單處理器名為 alarm_handler,可以透過呼叫 gen_event:swap_handler/3 來交換,像是 gen_event:swap_handler(alarm_handler, {alarm_handler, swap}, {NewHandler, Args})NewHandler:init({Args, {alarm_handler, Alarms}}) 會被呼叫。更多細節請參閱 STDLIB 中的 gen_event

另請參閱

error_logger, gen_event

摘要

函式

傳送 clear_alarm 事件到所有事件處理器。

傳回所有有效警報的列表。此函式只能在安裝簡單處理器時使用。

傳送 set_alarm 事件到所有事件處理器。

類型

-type alarm() :: {alarm_id(), AlarmDescription :: term()}.
-type alarm_id() :: term().

函式

-spec clear_alarm(alarm_id()) -> term().

傳送 clear_alarm 事件到所有事件處理器。

收到此事件時,預設的簡單處理器會清除最新收到的 id 為 AlarmId 的警報。

-spec get_alarms() -> [alarm()].

傳回所有有效警報的列表。此函式只能在安裝簡單處理器時使用。

-spec set_alarm(alarm()) -> term().

傳送 set_alarm 事件到所有事件處理器。

收到此事件時,預設的簡單處理器會儲存警報。AlarmId 用於識別警報,並在清除警報時使用。