过滤器 Filters
过滤器允许对日志事件进行评估,以确定是否或如何发布它们。
Filter将在其过滤器方法之一上被调用,并将返回一个Result,这是一个Enum,具有3个值之一- ACCEPT, DENY或NEUTRAL。
过滤器可以配置在以下四个位置之一:
- 上下文范围的过滤器直接在配置中配置。被这些筛选器拒绝的事件将不会传递给日志记录器进行进一步处理。
一旦事件被上下文范围的过滤器接受,它将不会被任何其他上下文范围的过滤器评估,也不会使用记录器的级别来过滤事件。然而,该事件将由记录器和Appender过滤器评估。
- 记录器过滤器是在指定的记录器上配置的。这些在上下文范围过滤器和日志记录器的日志级别之后进行评估。
被这些过滤器拒绝的事件将被丢弃,并且无论添加性设置如何,事件都不会传递给父Logger。
-
Appender过滤器用于确定是否应该由特定的Appender处理事件的格式化和发布。
-
Appender引用过滤器用于确定Logger是否应该将事件路由到Appender。
ThresholdFilter
如果LogEvent中的级别与配置的级别相同或更具体,则此过滤器返回onMatch结果,否则返回onMismatch值。
例如,如果ThresholdFilter配置了ERROR级别,并且LogEvent包含DEBUG级别,那么onMismatch值将被返回,因为ERROR事件比DEBUG事件更具体。
例子
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
<ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<pattern>%d %p %c{1.} [%t] %m%n</pattern>
</PatternLayout>
<TimeBasedTriggeringPolicy />
</RollingFile>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
参考资料
https://logging.apache.org/log4j/2.x/manual/filters.html