當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang domain(LogEvent, Extra)用法及代碼示例


domain(LogEvent, Extra) -> logger:filter_return()
OTP 21.0
類型:
LogEvent = logger:log_event()
Extra = {Action, Compare, MatchDomain}
Action = log | stop
Compare = super | sub | equal | not_equal | undefined
MatchDomain = [atom()]

此過濾器提供了一種基於 Metadata 中的 domain 字段過濾日誌事件的方法。該字段是可選的,使用它的目的是對來自特定函數區域的日誌事件進行分組。這允許在記錄器處理程序中進行過濾或其他專門處理。

域字段必須是原子列表,隨著列表變長,創建更小、更專業的域。最大的域是 [] ,它包含所有可能的域。

例如,考慮以下域:

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

D1 是兩者中最大的一個,據說是 D2 的 super-domain 。 D2 是 sub-domain D1D1D2 都是[] 的sub-domains 。

上述域用於源自 Erlang/OTP 的日誌。 D1表示日誌事件一般來自Erlang/OTP,D2表示日誌事件是所謂的SASL報告.

Extra參數到domain/2通過添加過濾器時指定函數 logger:add_primary_filter/2或者 logger:add_handler_filter/3.

過濾器將日誌事件元數據 (Domain) 中的 domain 字段的值與 MatchDomain 進行比較。如果 Compare 的值為:則過濾器匹配:


sub

並且 Domain 等於或 MatchDomain 的 sub-domain ,也就是說,如果 MatchDomainDomain 的前綴。


super

並且 Domain 等於或 MatchDomain 的 super-domain ,也就是說,如果 DomainMatchDomain 的前綴。


equal

並且 Domain 等於 MatchDomain


not_equal

並且 DomainMatchDomain 不同,或者元數據中沒有域字段。


undefined

並且元數據中沒有域字段。在這種情況下, MatchDomain 必須設置為 []

如果過濾器匹配並且 Actionlog ,則允許日誌事件。如果過濾器匹配且 Actionstop ,則日誌事件將停止。

如果過濾器不匹配,則返回 ignore ,這意味著其他過濾器或配置參數 filter_default 的值將決定是否允許該事件。

不包含任何域字段的日誌事件僅當 Compare 等於 undefinednot_equal 時匹配。

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

logger:set_handler_config(h1, filter_default, log). % this is the default
Filter = {fun logger_filters:domain/2, {stop, sub, [otp, sasl]}}.
logger:add_handler_filter(h1, no_sasl, Filter).
ok

相關用法


注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 domain(LogEvent, Extra) -> logger:filter_return()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。