檢視原始碼 logger_handler 行為 (behaviour) (kernel v10.2)
logger_handler 行為模組。
用於記錄器處理常式的行為模組。記錄器處理常式是一個回呼模組,當日誌事件通過所有篩選器並準備好記錄到某處時,會呼叫該模組。有關更多資訊,請參閱使用者指南中的 處理常式 (Handlers)。
另請參閱
摘要
回呼
當要新增新的處理常式時,會在臨時處理序上呼叫此函式。目的是驗證設定並啟動處理常式所需的所有資源。
當處理常式的設定即將變更時,會在臨時處理序上呼叫此函式。目的是驗證並根據新的設定採取行動。
當呼叫 Logger API 函式之一來擷取處理常式設定時,會呼叫此函式,例如 logger:get_handler_config/1
。
當所有主要篩選器和相關處理常式的所有篩選器都通過給定的日誌事件時,會呼叫此函式。它會在用戶端處理序上呼叫,也就是發出日誌事件的處理序。
當要移除處理常式時,會在臨時處理序上呼叫此函式。目的是釋放處理常式使用的所有資源。
類型
-type config() :: #{id => id(), config => term(), level => logger:level() | all | none, module => module(), filter_default => log | stop, filters => [{logger:filter_id(), logger:filter()}], formatter => {module(), logger:formatter_config()}}.
Logger 的處理常式設定資料。套用以下預設值
level => all
filter_default => log
filters => []
formatter => {logger_formatter, DefaultFormatterConfig
}
除了這些,Logger 會自動插入下列欄位,值取自 logger:add_handler/3
的前兩個參數
id => HandlerId
module => Module
這些是唯讀的,無法在執行階段變更。
處理常式特定的設定資料由處理常式回呼本身插入,位於名為 config
的欄位相關的子結構中。請參閱 logger_std_h
和 logger_disk_log_h
手冊頁,以取得有關這些處理常式的特定設定資訊。
請參閱 logger_formatter
手冊頁,以取得有關此格式器預設設定的資訊。
-type id() :: atom().
處理常式執行個體的唯一識別碼。
-type olp_config() :: #{sync_mode_qlen => non_neg_integer(), drop_mode_qlen => pos_integer(), flush_qlen => pos_integer(), burst_limit_enable => boolean(), burst_limit_max_count => pos_integer(), burst_limit_window_time => pos_integer(), overload_kill_enable => boolean(), overload_kill_qlen => pos_integer(), overload_kill_mem_size => pos_integer(), overload_kill_restart_after => non_neg_integer() | infinity}.
過載保護設定。
如需更多詳細資訊,請參閱 保護處理常式免於過載。
回呼
-callback adding_handler(Config1) -> {ok, Config2} | {error, Reason} when Config1 :: config(), Config2 :: config(), Reason :: term().
當要新增新的處理常式時,會在臨時處理序上呼叫此函式。目的是驗證設定並啟動處理常式所需的所有資源。
處理常式身分與 Config1
中的 id
鍵相關聯。
如果一切順利,回呼函式可以將可能的預設值或內部狀態值新增至設定,並在 {ok,Config2}
中傳回調整後的映射。
如果設定錯誤,或初始化失敗,回呼函式必須傳回 {error,Reason}
。
-callback changing_config(SetOrUpdate, OldConfig, NewConfig) -> {ok, Config} | {error, Reason} when SetOrUpdate :: set | update, OldConfig :: config(), NewConfig :: config(), Config :: config(), Reason :: term().
當處理常式的設定即將變更時,會在臨時處理序上呼叫此函式。目的是驗證並根據新的設定採取行動。
OldConfig
是現有的設定,而 NewConfig
是新的設定。
處理常式身分與 OldConfig
中的 id
鍵相關聯。
如果設定變更源自對 logger:set_handler_config/2,3
的呼叫,則 SetOrUpdate
的值為 set
,如果源自 logger:update_handler_config/2,3
,則值為 update
。處理常式可以使用此參數來決定如何更新 config
欄位的值,也就是處理常式特定的設定資料。通常,如果 SetOrUpdate
等於 set
,則必須為未指定的值指定預設值。如果 SetOrUpdate
等於 update
,則必須改用在 OldConfig
中找到的值。
如果一切順利,回呼函式必須在 {ok,Config}
中傳回可能調整後的設定。
如果設定錯誤,回呼函式必須傳回 {error,Reason}
。
-callback filter_config(Config) -> FilteredConfig when Config :: config(), FilteredConfig :: config().
當呼叫 Logger API 函式之一來擷取處理常式設定時,會呼叫此函式,例如 logger:get_handler_config/1
。
它允許處理常式從其設定資料中移除內部資料欄位,然後再將其傳回給呼叫者。
-callback log(LogEvent, Config) -> term() when LogEvent :: logger:log_event(), Config :: config().
當所有主要篩選器和相關處理常式的所有篩選器都通過給定的日誌事件時,會呼叫此函式。它會在用戶端處理序上呼叫,也就是發出日誌事件的處理序。
處理常式身分與 Config
中的 id
鍵相關聯。
處理常式必須記錄事件。
Logger 會忽略此函式的傳回值。
-callback removing_handler(Config) -> ok when Config :: config().
當要移除處理常式時,會在臨時處理序上呼叫此函式。目的是釋放處理常式使用的所有資源。
處理常式身分與 Config
中的 id
鍵相關聯。
Logger 會忽略傳回值。