檢視原始碼 alarm_handler (sasl v4.2.2)
警報處理程序
警報處理程序是一個 gen_event
事件管理程序,負責接收系統中的警報。此程序並非設計為完整的警報處理器,而是定義一個可以傳送警報的地方。啟動時,警報處理器會安裝一個簡單的事件處理器,但我們鼓勵使用者自行撰寫並安裝自己的處理器。
這個簡單的事件處理器會將所有警報以 info 報告的形式傳送到錯誤記錄器,並將所有警報儲存在一個列表中。此列表可以傳遞給之後安裝的使用者定義的事件處理器。如果產生大量警報,此列表可能會變得非常龐大。這也是建議安裝更好使用者定義處理器的好理由。
我們提供了設定和清除警報的函式。警報格式由使用者定義。例如,可以定義用於 SNMP 的事件處理器,以及警報管理資訊庫 (MIB)。
警報處理器是 SASL 應用程式的一部分。
為警報處理器撰寫新的事件處理器時,必須處理下列事件:
{set_alarm, {AlarmId, AlarmDescr}}
- 此事件由alarm_handler:set_alarm({AlarmId, AlarmDecsr})
產生。{clear_alarm, AlarmId}
- 此事件由alarm_handler:clear_alarm(AlarmId)
產生。
預設的簡單處理器名為 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
。
另請參閱
摘要
類型
函式
傳送 clear_alarm
事件到所有事件處理器。
收到此事件時,預設的簡單處理器會清除最新收到的 id 為 AlarmId
的警報。
-spec get_alarms() -> [alarm()].
傳回所有有效警報的列表。此函式只能在安裝簡單處理器時使用。
傳送 set_alarm
事件到所有事件處理器。
收到此事件時,預設的簡單處理器會儲存警報。AlarmId
用於識別警報,並在清除警報時使用。