主要说下组合过滤器 CompositeFilter ,比较常用
<Filters>
是组合过滤器额标签,它包含的子标签是具体的过滤器,这三个具体过滤器分别是日志等级过滤器
,正则表达式过滤器
和时间过滤器
。
需要说明的是onMatch和onMismatch可以选择的值及其含义。可选的值分别是,ACCEPT, DENY, NEUTRAL,ACCEP和DENY比较好理解就是接受和拒绝的意思,在使用单个过滤器的时候,一般就是使用这两个值。
但是在组合过滤器中,如果用接受ACCEPT的话,日志信息就会直接写入日志文件,后续的过滤器不再进行过滤。--- 有点像switch case break; 直接截断了 不会往下判断了。
在组合过滤器中,接受使用NEUTRAL(中立),被第一个过滤器接受的日志信息,会继续用后面的过滤器进行过滤,只有符合所有过滤器条件的日志信息,才会被最终写入日志文件。 --- 也就是层层过滤的意思,要都满足条件才能写入日志
例子1
<!-- 所要过滤的内容必须是日志内容详情,前面的包名不算 -->
<Filters>
<ThresholdFilter level="TRACE" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex=".* test .*" onMatch="NEUTRAL" onMismatch="DENY"/>
<TimeFilter start="05:00:00" end="05:30:00" onMatch=" NEUTRAL " onMismatch="DENY"/>
</Filters>
例子2 意思是日志内存包含 HiveSql 或 hive lines 或 sql_type 或 => 的INFO及其INFO以下级别的日志
<Filters>
<ThresholdFilter level="INFO" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex=".*(HiveSql|hive lines|sql_type).*" onMatch="NEUTRAL" onMismatch="DENY"/>
<RegexFilter regex=".*=>.*" onMatch="NEUTRAL" onMismatch="DENY"/>
</Filters>