檢視原始碼 logger_handler 行為 (behaviour) (kernel v10.2)

logger_handler 行為模組。

用於記錄器處理常式的行為模組。記錄器處理常式是一個回呼模組,當日誌事件通過所有篩選器並準備好記錄到某處時,會呼叫該模組。有關更多資訊,請參閱使用者指南中的 處理常式 (Handlers)

另請參閱

logger_filterslogger_formatterlogger

摘要

類型

Logger 的處理常式設定資料。套用以下預設值

處理常式執行個體的唯一識別碼。

過載保護設定。

回呼

當要新增新的處理常式時,會在臨時處理序上呼叫此函式。目的是驗證設定並啟動處理常式所需的所有資源。

當處理常式的設定即將變更時,會在臨時處理序上呼叫此函式。目的是驗證並根據新的設定採取行動。

當呼叫 Logger API 函式之一來擷取處理常式設定時,會呼叫此函式,例如 logger:get_handler_config/1

當所有主要篩選器和相關處理常式的所有篩選器都通過給定的日誌事件時,會呼叫此函式。它會在用戶端處理序上呼叫,也就是發出日誌事件的處理序。

當要移除處理常式時,會在臨時處理序上呼叫此函式。目的是釋放處理常式使用的所有資源。

類型

連結到此類型

config()

檢視原始碼 (自 OTP 27.0 起)
-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_hlogger_disk_log_h 手冊頁,以取得有關這些處理常式的特定設定資訊。

請參閱 logger_formatter 手冊頁,以取得有關此格式器預設設定的資訊。

-type id() :: atom().

處理常式執行個體的唯一識別碼。

連結到此類型

olp_config()

檢視原始碼 (自 OTP 27.0 起)
-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}.

過載保護設定。

如需更多詳細資訊,請參閱 保護處理常式免於過載

回呼

連結到此回呼

adding_handler(Config1)

檢視原始碼 (選用) (自 OTP 21.0 起)
-callback adding_handler(Config1) -> {ok, Config2} | {error, Reason}
                            when Config1 :: config(), Config2 :: config(), Reason :: term().

當要新增新的處理常式時,會在臨時處理序上呼叫此函式。目的是驗證設定並啟動處理常式所需的所有資源。

處理常式身分與 Config1 中的 id 鍵相關聯。

如果一切順利,回呼函式可以將可能的預設值或內部狀態值新增至設定,並在 {ok,Config2} 中傳回調整後的映射。

如果設定錯誤,或初始化失敗,回呼函式必須傳回 {error,Reason}

連結到此回呼

changing_config(SetOrUpdate, OldConfig, NewConfig)

檢視原始碼 (選用) (自 OTP 21.2 起)
-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}

連結到此回呼

filter_config(Config)

檢視原始碼 (選用) (自 OTP 21.2 起)
-callback filter_config(Config) -> FilteredConfig when Config :: config(), FilteredConfig :: config().

當呼叫 Logger API 函式之一來擷取處理常式設定時,會呼叫此函式,例如 logger:get_handler_config/1

它允許處理常式從其設定資料中移除內部資料欄位,然後再將其傳回給呼叫者。

連結到此回呼

log(LogEvent, Config)

檢視原始碼 (自 OTP 21.0 起)
-callback log(LogEvent, Config) -> term() when LogEvent :: logger:log_event(), Config :: config().

當所有主要篩選器和相關處理常式的所有篩選器都通過給定的日誌事件時,會呼叫此函式。它會在用戶端處理序上呼叫,也就是發出日誌事件的處理序。

處理常式身分與 Config 中的 id 鍵相關聯。

處理常式必須記錄事件。

Logger 會忽略此函式的傳回值。

連結到此回呼

removing_handler(Config)

檢視原始碼 (選用) (自 OTP 21.0 起)
-callback removing_handler(Config) -> ok when Config :: config().

當要移除處理常式時,會在臨時處理序上呼叫此函式。目的是釋放處理常式使用的所有資源。

處理常式身分與 Config 中的 id 鍵相關聯。

Logger 會忽略傳回值。