Filters to use with Logger.
All functions exported from this module can be used as primary
or handler
filters. See
logger:add_primary_filter/2
and
logger:add_handler_filter/3 for more information
about how filters are added.
Filters are removed with
logger:remove_primary_filter/1
and
logger:remove_handler_filter/2.
Functions
domain(LogEvent, Extra) -> logger:filter_return()
LogEvent = logger:log_event()Extra = {Action, Compare, MatchDomain}Action = log | stopCompare = super | sub | equal | not_equal | undefinedMatchDomain = [atom()]
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 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
. The filter matches if the
value of Compare is:
suband Domain is equal to or a sub-domain
of MatchDomain, that is, if MatchDomain is
a prefix of Domain.
superand Domain is equal to or a super-domain
of MatchDomain, that is, if Domain is a
prefix of MatchDomain.
equaland Domain is equal to MatchDomain.
not_equaland Domain differs from MatchDomain, or
if there is no domain field in metadata.
undefinedand there is no domain field in metadata. In this
case must be set
to [].
If the filter matches and is
log, the log event is allowed. If the filter matches
and 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 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
level(LogEvent, Extra) -> logger:filter_return()
LogEvent = logger:log_event()Extra = {Action, Operator, MatchLevel}Action = log | stopOperator = neq | eq | lt | gt | lteq | gteqMatchLevel = logger:level()
This filter provides a way of filtering log events based
on the log level. It matches log events by comparing the
log level with a specified MatchLevel
The parameter 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 event's log level
(Level) to by
calling
logger:compare_levels(Level, MatchLevel).
The filter matches if the value
of is:
neqand the compare function returns lt
or gt.
eqand the compare function returns eq.
ltand the compare function returns lt.
gtand the compare function returns gt.
lteqand the compare function returns lt
or eq.
gteqand the compare function returns gt
or eq.
If the filter matches and is
log, the log event is allowed. If the filter
matches and 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, will decide
if the event is allowed or not.
Example: only allow debug level log events
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) -> logger:filter_return()
LogEvent = logger:log_event()Extra = log | stop
This filter matches all progress reports
from supervisor and application_controller.
If is log, the progress
reports are allowed. If
is stop, the progress reports are stopped.
The filter returns ignore for all other log events.
remote_gl(LogEvent, Extra) -> logger:filter_return()
LogEvent = logger:log_event()Extra = log | stop
This filter matches all events originating from a process that has its group leader on a remote node.
If is log, the matching
events are allowed. If
is stop, the matching events are stopped.
The filter returns ignore for all other log events.