檢視原始碼 logger_filters (kernel v10.2)

用於 Logger 的篩選器。

此模組匯出的所有函式都可用作主要或處理常式篩選器。請參閱 logger:add_primary_filter/2logger:add_handler_filter/3 以取得有關如何新增篩選器的詳細資訊。

篩選器會使用 logger:remove_primary_filter/1logger:remove_handler_filter/2 移除。

另請參閱

logger

摘要

函式

此篩選器提供了一種根據 Metadata 中的 domain 欄位篩選記錄事件的方法。此欄位是選用的,使用它的目的是將來自特定功能區域的記錄事件分組。這允許在 Logger 處理常式中進行篩選或其他特殊處理。

此篩選器提供了一種根據記錄層級篩選記錄事件的方法。它通過將記錄層級與指定的 MatchLevel 進行比較來比對記錄事件。

此篩選器比對來自 supervisorapplication_controller 的所有進度報告。

此篩選器比對所有源自於其群組領導者位於遠端節點上的程序的事件。

函式

連結到此函式

domain(LogEvent, Extra)

檢視原始碼 (自 OTP 21.0 起)
-spec domain(LogEvent, Extra) -> logger:filter_return()
                when
                    LogEvent :: logger:log_event(),
                    Extra :: {Action, Compare, MatchDomain},
                    Action :: log | stop,
                    Compare :: super | sub | equal | not_equal | undefined,
                    MatchDomain :: [atom()].

此篩選器提供了一種根據 Metadata 中的 domain 欄位篩選記錄事件的方法。此欄位是選用的,使用它的目的是將來自特定功能區域的記錄事件分組。這允許在 Logger 處理常式中進行篩選或其他特殊處理。

網域欄位必須是原子列表,隨著列表增長,建立更小且更專業的網域。最大的網域是 [],包含所有可能的網域。

例如,考慮以下網域

D1 = [otp]
D2 = [otp, sasl]

D1 是兩者中較大的,並且被認為是 D2 的超網域。D2D1 的子網域。D1D2 都是 [] 的子網域。

上面的網域用於源自 Erlang/OTP 的記錄。D1 指定記錄事件來自一般的 Erlang/OTP,而 D2 指示記錄事件是所謂的 SASL 報告

domain/2 函式的 Extra 參數是在通過 logger:add_primary_filter/2logger:add_handler_filter/3 新增篩選器時指定的。

篩選器會將記錄事件的中繼資料中的 domain 欄位的值 (Domain) 與 MatchDomain 進行比較。如果 Compare 的值為,則篩選器會比對:

  • sub - 且 Domain 等於或為 MatchDomain 的子網域,也就是說,如果 MatchDomainDomain 的前綴。

  • super - 且 Domain 等於或為 MatchDomain 的超網域,也就是說,如果 DomainMatchDomain 的前綴。

  • equal - 且 Domain 等於 MatchDomain

  • not_equal - 且 DomainMatchDomain 不同,或者如果中繼資料中沒有網域欄位。

  • undefined - 且中繼資料中沒有網域欄位。在這種情況下,MatchDomain 必須設定為 []

如果篩選器比對且 Actionlog,則允許記錄事件。如果篩選器比對且 Actionstop,則停止記錄事件。

如果篩選器不比對,則會傳回 ignore,表示其他篩選器或組態參數 filter_default 的值,會決定是否允許該事件。

不包含任何網域欄位的記錄事件,僅當 Compare 等於 undefinednot_equal 時才比對。

範例:停止所有網域為 [otp, sasl | _] 的事件

1> logger:set_handler_config(h1, filter_default, log). % this is the default
ok
2> Filter = {fun logger_filters:domain/2, {stop, sub, [otp, sasl]}}.
...
3> logger:add_handler_filter(h1, no_sasl, Filter).
ok
連結到此函式

level(LogEvent, Extra)

檢視原始碼 (自 OTP 21.0 起)
-spec level(LogEvent, Extra) -> logger:filter_return()
               when
                   LogEvent :: logger:log_event(),
                   Extra :: {Action, Operator, MatchLevel},
                   Action :: log | stop,
                   Operator :: neq | eq | lt | gt | lteq | gteq,
                   MatchLevel :: logger:level().

此篩選器提供了一種根據記錄層級篩選記錄事件的方法。它通過將記錄層級與指定的 MatchLevel 進行比較來比對記錄事件。

Extra 參數是在通過 logger:add_primary_filter/2logger:add_handler_filter/3 新增篩選器時指定的。

篩選器會通過呼叫 logger:compare_levels(Level, MatchLevel),將事件的記錄層級值 (Level) 與 MatchLevel 進行比較。如果 Operator 的值為,則篩選器會比對:

  • neq - 且比較函式傳回 ltgt

  • eq - 且比較函式傳回 eq

  • lt - 且比較函式傳回 lt

  • gt - 且比較函式傳回 gt

  • lteq - 且比較函式傳回 lteq

  • gteq - 且比較函式傳回 gteq

如果篩選器比對且 Actionlog,則允許記錄事件。如果篩選器比對且 Actionstop,則停止記錄事件。

如果篩選器不比對,則會傳回 ignore,表示其他篩選器或組態參數 filter_default 的值,將決定是否允許該事件。

範例:僅允許偵錯層級的記錄事件

logger:set_handler_config(h1, filter_default, stop).
Filter = {fun logger_filters:level/2, {log, eq, debug}}.
logger:add_handler_filter(h1, debug_only, Filter).
ok
連結到此函式

progress(LogEvent, Extra)

檢視原始碼 (自 OTP 21.0 起)
-spec progress(LogEvent, Extra) -> logger:filter_return()
                  when LogEvent :: logger:log_event(), Extra :: log | stop.

此篩選器比對來自 supervisorapplication_controller 的所有進度報告。

如果 Extralog,則允許進度報告。如果 Extrastop,則停止進度報告。

篩選器會對所有其他記錄事件傳回 ignore

連結到此函式

remote_gl(LogEvent, Extra)

檢視原始碼 (自 OTP 21.0 起)
-spec remote_gl(LogEvent, Extra) -> logger:filter_return()
                   when LogEvent :: logger:log_event(), Extra :: log | stop.

此篩選器比對所有源自於其群組領導者位於遠端節點上的程序的事件。

如果 Extralog,則允許比對的事件。如果 Extrastop,則停止比對的事件。

篩選器會對所有其他記錄事件傳回 ignore