Log4j2的過濾器功能使用比較靈活,可以在三鍾標簽(對應下面類圖中的三個類)中添加過濾器Filter,一是在配置文件的<configuration> 標簽下,第二是在<loggers>,第三是在<appenders>標簽下。
下圖摘自用戶手冊第二章Architecture
過濾器也有很多種,具體可以參考手冊的第十一章Filters,大家可以去具體看一下。下面介紹一種比較實用的過濾器,組合過濾器CompositeFilter。CompositeFilter可以包含多種不同的過濾器,這樣,多種過濾條件可以同時過濾日志信息,符合所有條件的日志信息才會被寫入日志文件。下面舉一個例子:
<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>
<Filters>是組合過濾器額標簽,它包含的子標簽是具體的過濾器,這三個具體過濾器分別是日志等級過濾器,正則表達式過濾器和時間過濾器。
需要說明的是onMatch和onMismatch可以選擇的值及其含義。可選的值分別是,ACCEPT, DENY, NEUTRAL,ACCEP和DENY比較好理解就是接受和拒絕的意思,在使用單個過濾器的時候,一般就是使用這兩個值。但是在組合過濾器中,如果用接受ACCEPT的話,日志信息就會直接寫入日志文件,后續的過濾器不再進行過濾。所以,在組合過濾器中,接受使用NEUTRAL(中立),被第一個過濾器接受的日志信息,會繼續用后面的過濾器進行過濾,只有符合所有過濾器條件的日志信息,才會被最終寫入日志文件。
原文鏈接:https://blog.csdn.net/chenhaotong/article/details/50487557