Logback中如何自定義靈活的日誌過濾規則

2022-01-11 00:01:27 字數 1016 閱讀 4578

ch.qos.logback.classic.filter.levelfilter過濾器的作用是通過比較日誌級別來控制日誌輸出。下面是乙個只記錄日誌級別為error的例子:

error

accept

deny

%-4relative [%thread] %-5level %logger - %msg%n

levelfilter通過定義日誌級別,並設定匹配與不匹配的處理策略來控制針對某個級別日誌的輸出策略。當我們要設定多個不同級別的日誌策略的時候,如果僅依靠這個過濾器,我們就要級聯的定義多個filter來控制才能實現,顯然不是很方便,所以此時我們就可以使用ch.qos.logback.classic.filter.thresholdfilter過濾器來控制了。比如下面的配置,實現了只記錄warn及以上級別的控制,比warn級別低(如:info、debug、trace)都不會記錄。

warn

%-4relative [%thread] %-5level %logger - %msg%n

通過上述介紹的兩個過濾器來控制日誌的記錄級別已經滿足絕大部分的需求,但是可能還是會出現一些特殊情況,需要自定義複雜的過濾規則,比如想過濾掉一些框架中的日誌,通過自帶的幾個過濾器已經無法完全控制,並且也不希望修改框架原始碼來實現。這個時候,我們就可以自己來實現過濾器,並配置使用。實現的方式也很簡單,只需要實現logback提供的ch.qos.logback.core.filter.filter介面即可。

下面舉乙個簡單的例子:

public class myfilter extends filter

return filterreply.accept;

}return filterreply.deny;

}}

%-4relative [%thread] %-5level %logger - %msg%n

更多關於logback過濾器的內容可參考官方文件:

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...

logback中使用MDC自定義日誌輸出格式

logback mdc 相當於自定義日誌格式輸出 寫在過濾器中 示例 try else runtimemxbean runtimemxbean managementfactory.getruntimemxbean 程序 mdc.put process runtimemxbean.getname lo...

C 中如何自定義事件

c 中如何 自定義事件?wason zhuhai 本次只用乙個例項,來說明在c 中如何使用 自定義事件。寫乙個類,此類包含了 自定義事件 onsendmsg。檔名 chatserver.cs public class chatserver 檔名 form1.cs 類事件的處理 如下 private ...