logback LevelFilter 與 ThresholdFilter

概述

logback如果需要靈活的配置日志級別宣赔,需要結(jié)合過濾器瞪浸,這個標(biāo)簽。需要注意的是钩蚊,過濾器過濾的基礎(chǔ)是在root標(biāo)簽的配置基礎(chǔ)上進行的。
過濾器可以寫在appender標(biāo)簽內(nèi)两疚,可以寫一個或多個含滴,順序執(zhí)行。過濾器會對每個級別的日志設(shè)置枚舉值谈况,表示對日志的處理方式递胧。
  DENY:日志將立即被拋棄不再經(jīng)過其他過濾器赡茸;
  NEUTRAL:有序列表里的下個過濾器過接著處理日志;(該級別既不處理占卧,也不拋棄,相當(dāng)于沒有任何處理华蜒,日志會被保存下來并在本appender被執(zhí)行)
  ACCEPT:日志會被立即處理,不再經(jīng)過剩余過濾器叭喜。
下面講述兩個常用的filter:

1、級別過濾器

LevelFilter: 級別過濾器譬涡,對特定某個級別的日志進行過濾。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!-- 1格式化輸出:%d表示日期涡匀,%thread表示線程名委可,%-5level:級別從左顯示5個字符寬度%msg:日志消息渊跋,%n是換行符-->
        <pattern></pattern>
        <charset>utf-8</charset>
    </encoder>
    <!-- 過濾掉非info的日志 -->
     <filter class="ch.qos.logback.classic.filter.LevelFilter">   
          <level>INFO</level>   
          <onMatch>ACCEPT</onMatch>   
          <onMismatch>DENY</onMismatch>   
      </filter>   
</appender>
<!-- 日志級別排序為: TRACE < DEBUG < INFO < WARN < ERROR -->
<!-- 日志輸出級別 -->
<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>
</configuration>

level:日志級別。
onMatch:對符合過濾級別的日志的操作燕少,這里僅僅包括指定級別。(DENY客们,NEUTRAL,ACCEPT)
onMismatch:對不符合過濾級別的日志的操作底挫,這里僅僅包括指定級別。(DENY建邓,NEUTRAL,ACCEPT)
測試代碼:

package com.dbzx.controller;

import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.dbzx.common.ResultModel;

@Controller
public class HelloController {
  Logger logger = LoggerFactory.getLogger(HelloController.class);
  @ResponseBody
@RequestMapping("/hello")
public ResultModel hello() {
    logger.trace("*****************trace**********");
    logger.debug("*************debug*************");
    logger.info("**************info****************");
    logger.warn("****************warn***************");
    logger.error("****************error*************");
    return ResultModel.ok("hello,dbzx"+new Date().getTime());
}
}

結(jié)果:

2019-05-30 17:21:19.413 [http-nio-8888-exec-1] INFO  com.dbzx.controller.HelloController - **************info****************

過濾器的配置在配置級別的基礎(chǔ)上過濾沸手,即root標(biāo)簽的配置級別。本例中契吉,是對大于等于debug級別的日志過濾。

ps:如果修改onMismatch參數(shù)為NEUTRAL捐晶。

    <filter class="ch.qos.logback.classic.filter.LevelFilter">   
          <level>INFO</level>   
          <onMatch>ACCEPT</onMatch>   
          <onMismatch>NEUTRAL</onMismatch>   
      </filter> 

結(jié)果:

2019-05-30 17:25:08.045 [http-nio-8888-exec-1] DEBUG com.dbzx.controller.HelloController - *************debug*************
2019-05-30 17:25:08.045 [http-nio-8888-exec-1] INFO  com.dbzx.controller.HelloController - **************info****************
2019-05-30 17:25:08.045 [http-nio-8888-exec-1] WARN  com.dbzx.controller.HelloController - ****************warn***************
2019-05-30 17:25:08.046 [http-nio-8888-exec-1] ERROR com.dbzx.controller.HelloController - ****************error*************

結(jié)果就是:出了info級別惑灵,debug、warn泣棋、error級別的日志也會被打印,即不符合配置級別的日志潭辈,同樣被執(zhí)行。

2把敢、臨界值過濾器

ThresholdFilter: 臨界值過濾器,過濾掉低于指定臨界值的日志修赞。
它沒有過多的參數(shù),只有默認配置勾邦。當(dāng)日志級別等于或高于臨界值時割择,過濾器返回NEUTRAL眷篇;當(dāng)日志級別低于臨界值時荔泳,日志返回DENY。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!-- 1格式化輸出:%d表示日期玛歌,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日志消息创肥,%n是換行符-->
        <pattern></pattern>
        <charset>utf-8</charset>
    </encoder>
   <!--臨界值日志過濾級別配置 -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 只打印DEBUG日志 --> 
        <!-- 在日志配置級別的基礎(chǔ)上過濾掉info級別以下的日志 -->
        <level>INFO</level> 
    </filter> 
</appender>  
</appender>
<!-- 日志級別排序為: TRACE < DEBUG < INFO < WARN < ERROR -->
<!-- 日志輸出級別 -->
<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</root>
</configuration>

結(jié)果:

2019-05-30 17:26:42.755 [http-nio-8888-exec-1] INFO  com.dbzx.controller.HelloController - **************info****************
2019-05-30 17:26:42.755 [http-nio-8888-exec-1] WARN  com.dbzx.controller.HelloController - ****************warn***************
2019-05-30 17:26:42.756 [http-nio-8888-exec-1] ERROR com.dbzx.controller.HelloController - ****************error*************

在debug配置級別的基礎(chǔ)上,過濾掉info以下的日志瓤的。最終,info及大于info級別的日志打印的控制臺圈膏,info以下,debug及debug以上的日志稽坤,被拋棄掉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末睦擂,一起剝皮案震驚了整個濱河市杖玲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌摆马,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件述呐,死亡現(xiàn)場離奇詭異,居然都是意外死亡乓搬,警方通過查閱死者的電腦和手機代虾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坷澡,“玉大人含蓉,你說我怎么就攤上這事∠诳郏” “怎么了着降?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我发侵,道長,這世上最難降的妖魔是什么刃鳄? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任钱骂,我火速辦了婚禮,結(jié)果婚禮上见秽,老公的妹妹穿的比我還像新娘。我一直安慰自己解取,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布勺择。 她就那樣靜靜地躺著伦忠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昆码。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天旧噪,我揣著相機與錄音,去河邊找鬼淘钟。 笑死陪毡,一個胖子當(dāng)著我的面吹牛米母,可吹牛的內(nèi)容都是我干的毡琉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼慧耍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了芍碧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤定庵,失蹤者是張志新(化名)和其女友劉穎践美,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨倡,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡兴革,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了杂曲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡咱揍,死狀恐怖棚饵,靈堂內(nèi)的尸體忽然破棺而出煤裙,到底是詐尸還是另有隱情噪漾,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布题翰,位于F島的核電站,受9級特大地震影響豹障,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沼填,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一括授、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荚虚,春花似錦、人聲如沸版述。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咆疗,卻和暖如春母债,著一層夾襖步出監(jiān)牢的瞬間午磁,已是汗流浹背毡们。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留登颓,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓框咙,卻偏偏與公主長得像脖隶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子产阱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容