主要說下組合過濾器 CompositeFilter ,比較常用
<Filters> 是組合過濾器額標簽,它包含的子標簽是具體的過濾器,這三個具體過濾器分別是日志等級過濾器,正則表達式過濾器和時間過濾器。
需要說明的是onMatch和onMismatch可以選擇的值及其含義??蛇x的值分別是,ACCEPT, DENY, NEUTRAL,ACCEP和DENY比較好理解就是接受和拒絕的意思,在使用單個過濾器的時候,一般就是使用這兩個值。
但是在組合過濾器中,如果用接受ACCEPT的話,日志信息就會直接寫入日志文件,后續(xù)的過濾器不再進行過濾。--- 有點像switch case break; 直接截斷了 不會往下判斷了。
在組合過濾器中,接受使用NEUTRAL(中立),被第一個過濾器接受的日志信息,會繼續(xù)用后面的過濾器進行過濾,只有符合所有過濾器條件的日志信息,才會被最終寫入日志文件。 --- 也就是層層過濾的意思,要都滿足條件才能寫入日志
例子1
<!-- 所要過濾的內(nèi)容必須是日志內(nèi)容詳情,前面的包名不算 -->
<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 意思是日志內(nèi)存包含 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>