前言:並不是懂很多,只是官網的搬運工
參考資料: http://logback.qos.ch/manual/filters.html
概念講解
我們在講之前需要了解幾個概念
DENY,NEUTRAL和ACCEPT
這三個值是通過調用Filter的decide()方法的返回值。(如果需要實現自己的Filter,也是需要實現Filter的decide()方法的,這個一會說明).
如果返回值爲DENY,那麼此日誌將會被放棄並且不會被剩餘的過濾器考慮。
如果返回值爲NEUTRAL,那麼將會經過下一個過濾器。如果沒有了其他的過濾器,那麼日誌事件會被正常處理
如果返回值爲ACCEPT,那麼將會立即處理日誌,並且跳過後續的過濾器(如果有的話)
過濾器
常規過濾器
1、LevelFilter
LevelFilter根據精確的級別匹配過濾事件。如果事件的級別等於已配置的級別,則過濾器將接受或拒絕事件,具體取決於onMatch和onMismatch屬性的配置。比如
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
2、ThresholdFilter
該過濾器過濾低於指定閾值的事件。對於等於或高於閾值的事件,響應爲NEUTRAL 即交給後續過濾器處理,如果沒有則正常處理日誌事件。級別低於閾值的事件將被拒絕。比如
<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<!-- deny all events with a level below INFO, that is TRACE and DEBUG -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
自定義過濾器
實現自定義過濾器很容易。要做的就是擴展Filter抽象類並實現該 decide()方法。
總結
看到官網還有很多種,這裏不一一說明。只列舉幾種常用的,如果後續有更復雜的日誌管理在補後續。