domain(LogEvent, Extra) -> logger:filter_return()
OTP 21.0
Types
This filter provides a way of filtering log events based on a domain
field in Metadata
. This field is optional, and the purpose of using it is to group log events from, for example, a specific functional area. This allows filtering or other specialized treatment in a Logger handler.
A domain field must be a list of atoms, creating smaller and more specialized domains as the list grows longer. The greatest domain is []
, which comprises all possible domains.
For example, consider the following domains:
D1 = [otp] D2 = [otp, sasl]
D1
is the greatest of the two, and is said to be a super-domain of D2
. D2
is a sub-domain D1
. Both D1
and D2
are sub-domains of []
.
The above domains are used for logs originating from Erlang/OTP. D1 specifies that the log event comes from Erlang/OTP in general, and D2 indicates that the log event is a so called SASL report
.
The Extra
parameter to the domain/2
function is specified when adding the filter via logger:add_primary_filter/2
or logger:add_handler_filter/3
.
The filter compares the value of the domain
field in the log event's metadata (Domain
) against MatchDomain
. The filter matches if the value of Compare
is:
-
sub
-
and
Domain
is equal to or a sub-domain ofMatchDomain
, that is, ifMatchDomain
is a prefix ofDomain
. -
super
-
and
Domain
is equal to or a super-domain ofMatchDomain
, that is, ifDomain
is a prefix ofMatchDomain
. -
equal
-
and
Domain
is equal toMatchDomain
. -
not_equal
-
and
Domain
differs fromMatchDomain
, or if there is no domain field in metadata. -
undefined
-
and there is no domain field in metadata. In this case
MatchDomain
must be set to[]
.
If the filter matches and Action
is log
, the log event is allowed. If the filter matches and Action
is stop
, the log event is stopped.
If the filter does not match, it returns ignore
, meaning that other filters, or the value of the configuration parameter filter_default
, decide if the event is allowed or not.
Log events that do not contain any domain field, match only when Compare
is equal to undefined
or not_equal
.
Example: stop all events with domain [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