最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

logback使用MDCFilter日志過(guò)濾源碼解讀

 更新時(shí)間:2023年11月15日 10:19:24   作者:codecraft  
這篇文章主要介紹了logback使用MDCFilter日志過(guò)濾源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

本文主要研究一下logback的MDCFilter

MatchingFilter

ch/qos/logback/classic/turbo/MatchingFilter.java

public abstract class MatchingFilter extends TurboFilter {
    protected FilterReply onMatch = FilterReply.NEUTRAL;
    protected FilterReply onMismatch = FilterReply.NEUTRAL;
    final public void setOnMatch(String action) {
        if ("NEUTRAL".equals(action)) {
            onMatch = FilterReply.NEUTRAL;
        } else if ("ACCEPT".equals(action)) {
            onMatch = FilterReply.ACCEPT;
        } else if ("DENY".equals(action)) {
            onMatch = FilterReply.DENY;
        }
    }
    final public void setOnMismatch(String action) {
        if ("NEUTRAL".equals(action)) {
            onMismatch = FilterReply.NEUTRAL;
        } else if ("ACCEPT".equals(action)) {
            onMismatch = FilterReply.ACCEPT;
        } else if ("DENY".equals(action)) {
            onMismatch = FilterReply.DENY;
        }
    }
}
MatchingFilter繼承了TurboFilter,它提供了setOnMatch及setOnMismatch方法,它們?cè)赼ction為NEUTRAL、ACCEPT、DENY時(shí)設(shè)置對(duì)應(yīng)的onMatch、onMismatch

MDCFilter

ch/qos/logback/classic/turbo/MDCFilter.java

public class MDCFilter extends MatchingFilter {
    String MDCKey;
    String value;
    @Override
    public void start() {
        int errorCount = 0;
        if (value == null) {
            addError("\'value\' parameter is mandatory. Cannot start.");
            errorCount++;
        }
        if (MDCKey == null) {
            addError("\'MDCKey\' parameter is mandatory. Cannot start.");
            errorCount++;
        }
        if (errorCount == 0)
            this.start = true;
    }
    @Override
    public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable t) {
        if (!isStarted()) {
            return FilterReply.NEUTRAL;
        }
        String value = MDC.get(MDCKey);
        if (this.value.equals(value)) {
            return onMatch;
        }
        return onMismatch;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public void setMDCKey(String MDCKey) {
        this.MDCKey = MDCKey;
    }
}
MDCFilter繼承了MatchingFilter,其start方法校驗(yàn)MDCKey及value屬性是否有值,其decide方法跟從MDC獲取指定key的值,然后判斷該值域value是否相等,相等則返回onMatch,否則返回onMismatch

示例

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <turboFilter class="ch.qos.logback.classic.turbo.MDCFilter">
    <MDCKey>username</MDCKey>
    <Value>sebastien</Value>
    <OnMatch>ACCEPT</OnMatch>
  </turboFilter>
  <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter">
    <Marker>billing</Marker>
    <OnMatch>DENY</OnMatch>
  </turboFilter>
  <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>%date [%thread] %-5level %logger - %msg%n</Pattern>
    </layout>
  </appender>
  <root level="info">
    <appender-ref ref="console" />
  </root>
</configuration>

小結(jié)

logback提供了MDCFilter,它可以根據(jù)指定的MDCKey從MDC取值,然后根據(jù)配置的value進(jìn)行判斷,然后執(zhí)行onMatch或者onMismatch來(lái)決定是否打印日志。

以上就是logback使用MDCFilter日志過(guò)濾源碼解讀的詳細(xì)內(nèi)容,更多關(guān)于logback MDCFilter日志過(guò)濾的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解HandlerInterceptor處理器攔截器的用法

    詳解HandlerInterceptor處理器攔截器的用法

    這篇文章主要介紹了HandlerInterceptor處理器攔截器的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 關(guān)于SpringBoot獲取IOC容器中注入的Bean(推薦)

    關(guān)于SpringBoot獲取IOC容器中注入的Bean(推薦)

    本文通過(guò)實(shí)例代碼給大家詳解了springboot獲取ioc容器中注入的bean問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • Mybatis實(shí)現(xiàn)分頁(yè)的注意點(diǎn)

    Mybatis實(shí)現(xiàn)分頁(yè)的注意點(diǎn)

    Mybatis提供了強(qiáng)大的分頁(yè)攔截實(shí)現(xiàn),可以完美的實(shí)現(xiàn)分功能。下面小編給大家分享小編在使用攔截器給mybatis進(jìn)行分頁(yè)所遇到的問(wèn)題及注意點(diǎn),需要的朋友一起看看吧
    2017-07-07
  • java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解

    java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解

    這篇文章主要介紹了java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測(cè)一下Java對(duì)正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • 關(guān)于Jmeter接口測(cè)試實(shí)戰(zhàn)-Cookies

    關(guān)于Jmeter接口測(cè)試實(shí)戰(zhàn)-Cookies

    這篇文章主要介紹了關(guān)于Jmeter接口測(cè)試實(shí)戰(zhàn)-Cookies問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Spring interceptor攔截器配置及用法解析

    Spring interceptor攔截器配置及用法解析

    這篇文章主要介紹了Spring interceptor攔截器配置及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Log4j不同模塊輸出到不同的文件中

    Log4j不同模塊輸出到不同的文件中

    這篇文章主要介紹了Log4j不同模塊輸出到不同的文件中 的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • Java中controller層如何接收帶參數(shù)的查詢

    Java中controller層如何接收帶參數(shù)的查詢

    本文主要介紹了Java中controller層如何接收帶參數(shù)的查詢,在控制器層接收帶參數(shù)的查詢可以通過(guò)多種方式實(shí)現(xiàn),下面就詳細(xì)的介紹一下,感興趣的可以了解一下
    2023-08-08
  • SpringBoot配置數(shù)據(jù)庫(kù)密碼加密的方法

    SpringBoot配置數(shù)據(jù)庫(kù)密碼加密的方法

    由于系統(tǒng)安全的考慮,配置文件中不能出現(xiàn)明文密碼的問(wèn)題,本文就給大家詳細(xì)介紹下springboot配置數(shù)據(jù)庫(kù)密碼加密的方法,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

湖口县| 苗栗市| 论坛| 三河市| 凤冈县| 梨树县| 水富县| 延津县| 扶沟县| 手游| 理塘县| 宜宾市| 江都市| 靖边县| 霍城县| 梧州市| 沅江市| 专栏| 新营市| 喜德县| 光泽县| 永川市| 郴州市| 通渭县| 志丹县| 额尔古纳市| 咸阳市| 潞城市| 沙雅县| 江西省| 工布江达县| 泸州市| 诸暨市| 多伦县| 松滋市| 唐海县| 陵川县| 乌鲁木齐县| 阿勒泰市| 临潭县| 房山区|