当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。