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

Java中的logback標記日志過濾器MarkerFilter詳解

 更新時間:2023年11月15日 10:00:31   作者:立小研先森  
這篇文章主要介紹了Java中的logback標記日志過濾器MarkerFilter詳解,在logback-classic中存在一個全局過濾器TurboFilter,TurboFilter是與LoggerContext綁定,會在會在其它過濾器之前執(zhí)行,需要的朋友可以參考下

開源日志SDK(純java版)

<!-- Java基于logback的日志組件SDK -->
<dependency>
    <groupId>io.github.mingyang66</groupId>
    <artifactId>emily-spring-boot-logger</artifactId>
    <version>4.3.6</version>
</dependency>
<!--Java通用日志組件SDK-->
<dependency>
  <groupId>io.github.mingyang66</groupId>
  <artifactId>oceansky-logger</artifactId>
  <version>4.3.6</version>
</dependency>

在logback-classic中存在一個全局過濾器TurboFilter,TurboFilter是與LoggerContext綁定,會在會在其它過濾器之前執(zhí)行;MarkerFilter是TurboFilter的一個子類,其作用是標記日志是否記錄入文件之中,可以指定標記的日志記錄到文件中;也可以指定標記的日志拒絕記錄到文件中,其它未標記的記錄入文件;

一、定義MarkerFilter初始化實例對象

    /**
     * 全局標記過濾器,接受指定標記的日志記錄到文件中
     *
     * @param context 上下文
     * @param marker  marker標識
     * @return 標記過濾器,將會接受被標記的日志記錄到文件中
     */
    public MarkerFilter getAcceptMarkerFilter(Context context, String marker) {
        MarkerFilter filter = new MarkerFilter();
        //過濾器名稱
        filter.setName(StrUtils.join("AcceptMarkerFilter-", marker));
        //上下文
        filter.setContext(context);
        //日志過濾級別
        filter.setMarker(marker);
        //設置符合條件的日志接受
        filter.setOnMatch(FilterReply.ACCEPT.name());
        //不符合條件的日志拒絕
        filter.setOnMismatch(FilterReply.DENY.name());
        //添加內部狀態(tài)信息
        filter.addError("Build AcceptMarkerFilter Success");
        //標記為啟用狀態(tài)
        filter.start();
        return filter;
    }
    /**
     * 全局標記過濾器,拒絕標記的日志記錄到文件中
     *
     * @param context 上下文
     * @param marker  marker標識
     * @return 標記過濾器,將會拒絕被標記的日志記錄到文件中
     */
    public MarkerFilter getDenyMarkerFilter(Context context, String marker) {
        MarkerFilter filter = new MarkerFilter();
        //過濾器名稱
        filter.setName(StrUtils.join("DenyMarkerFilter-", marker));
        //上下文
        filter.setContext(context);
        //日志過濾級別
        filter.setMarker(marker);
        //設置符合條件的日志接受
        filter.setOnMatch(FilterReply.DENY.name());
        //不符合條件的日志拒絕
        filter.setOnMismatch(FilterReply.ACCEPT.name());
        //添加內部狀態(tài)信息
        filter.addError("Build DenyMarkerFilter Success");
        //標記為啟用狀態(tài)
        filter.start();
        return filter;
    }

上述定義了一個指定標記的日志會被記錄入文件的MarkerFilter過濾器,一個指定標記的日志不會被記錄日志文件,其它日志文件會被記錄入文件。

二、將MarkerFilter添加到LoggerContext上下文

private static final LoggerContext LOGGER_CONTEXT = (LoggerContext) LoggerFactory.getILoggerFactory();
 context.addTurboFilter(LogbackFilter.getSingleton().getAcceptMarkerFilter(context, marker));
 context.addTurboFilter(LogbackFilter.getSingleton().getDenyMarkerFilter(context, marker));

上述代碼比較簡單,詳情可以參考源碼;上述會將定義好的兩個全局過濾器添加到LoggerContext中,接下來就可以根據需要標記日志,控制是否輸出到日志文件。

三、標記日志使用示例

private static final Logger baseLogger = LoggerFactory.getLogger(LogbackController.class);
private static final Marker marker = MarkerFactory.getMarker("instance_marker");

baseLogger.error("--------error");
baseLogger.info("--------info");
baseLogger.debug("--------debug");
baseLogger.warn("--------warn");
baseLogger.trace("--------trace");

baseLogger.error(marker, "--------marker error");
baseLogger.info(marker, "--------marker info");
baseLogger.debug(marker, "--------marker debug");
baseLogger.warn(marker, "--------marker warn");
baseLogger.trace(marker, "--------marker trace");

上述示例如果指定的標記設置為接受打印到日志文件,則你會在日志文件中、控制臺上看到帶有marker的日志信息;如果標記的日志被設置為拒絕,則在日志文件、控制臺上看到的就是不帶marker的日志信息;

到此這篇關于Java中的logback標記日志過濾器MarkerFilter詳解的文章就介紹到這了,更多相關logback標記日志過濾器MarkerFilter內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于Springboot一個注解搞定數據字典的實踐方案

    基于Springboot一個注解搞定數據字典的實踐方案

    這篇文章主要介紹了基于Springboot一個注解搞定數據字典問題,大致的方向是自定義注解,在序列化的時候進行數據處理,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • mybatis查詢字段為null設置為0的操作

    mybatis查詢字段為null設置為0的操作

    這篇文章主要介紹了mybatis查詢字段為null設置為0的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • MySQL和Java通用加密解密方式小結

    MySQL和Java通用加密解密方式小結

    這篇文章主要介紹了MySQL和Java通用加密解密方式,加密方式使用AES加密,在轉成Base64,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-12-12
  • Spring?Security實現分布式系統(tǒng)授權方案詳解

    Spring?Security實現分布式系統(tǒng)授權方案詳解

    這篇文章主要介紹了Spring?Security實現分布式系統(tǒng)授權,本節(jié)完成注冊中心的搭建,注冊中心采用Eureka,本文通過示例代碼圖文相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • java使用BeanUtils.copyProperties踩坑經歷

    java使用BeanUtils.copyProperties踩坑經歷

    最近在做個項目,踩了個坑特此記錄一下,本文主要介紹了使用BeanUtils.copyProperties踩坑經歷,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Java之Spring AOP 實現用戶權限驗證

    Java之Spring AOP 實現用戶權限驗證

    本篇文章主要介紹了Java之Spring AOP 實現用戶權限驗證,用戶登錄、權限管理這些是必不可少的業(yè)務邏輯,具有一定的參考價值,有興趣的可以了解一下。
    2017-02-02
  • java多態(tài)中的就近原則介紹

    java多態(tài)中的就近原則介紹

    大家好,本篇文章主要講的是java多態(tài)中的就近原則介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java9 集合工廠方法解析

    Java9 集合工廠方法解析

    這篇文章主要介紹了Java9 集合工廠方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java 兩階段終止線程的正確做法

    java 兩階段終止線程的正確做法

    這篇文章主要給大家分享了java 兩階段終止線程的正確做法,文章列舉出錯誤的做法與正確做法做對比,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2021-12-12
  • spring @EventListener 事件與監(jiān)聽的示例詳解

    spring @EventListener 事件與監(jiān)聽的示例詳解

    本文介紹了自定義Spring事件和監(jiān)聽器的方法,包括如何發(fā)布事件、監(jiān)聽事件以及如何處理異步事件,通過示例代碼和日志,展示了事件的順序執(zhí)行和異步處理機制,感興趣的朋友一起看看吧
    2025-03-03

最新評論

墨玉县| 玉林市| 五寨县| 堆龙德庆县| 中方县| 离岛区| 茂名市| 玛纳斯县| 荣昌县| 民乐县| 齐齐哈尔市| 伊宁县| 乌拉特后旗| 芜湖县| 双牌县| 桐柏县| 老河口市| 治县。| 闽清县| 宜春市| 常熟市| 大安市| 保德县| 金昌市| 凤凰县| 五河县| 手机| 乐山市| 鲁山县| 阜新市| 东乡族自治县| 怀宁县| 凯里市| 云霄县| 沿河| 郑州市| 台中市| 南漳县| 深州市| 崇州市| 车致|