Logback的Filters詳解

前言:並不是懂很多,只是官網的搬運工
參考資料: 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()方法。

總結

看到官網還有很多種,這裏不一一說明。只列舉幾種常用的,如果後續有更復雜的日誌管理在補後續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章