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

Java動態(tài)批量生成logback日志文件的示例

 更新時間:2025年04月18日 09:29:07   作者:妄癡夢中  
本文主要介紹了Java動態(tài)批量生成logback日志文件的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

應用場景舉個例子:

當我一個服務需要啟動n個端口,來監(jiān)聽n個來源的數(shù)據(jù),并且處理數(shù)據(jù)邏輯一致;但是我想要它們的日志分開文件夾來打印,從而更好的分析問題,那么就可以用我下面提供的模版了;

動態(tài)生成日志logger,然后通過對象管理起來,然后我們可以從這個管理器內(nèi)拿logger來打印日志,或者從LoggerFactory根據(jù)id去拿logger對象

    public void initLogger(Set<Integer> keySet) {
        // 獲取 Logback 的 LoggerContext
        LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
        for (Integer port : keySet) {
            Logger logger = null;
            try {
                String currPath = bsePath + "/" + port + "/";
                // 創(chuàng)建 Logger
                logger = context.getLogger("LOGGER-" + port);
                logger.setLevel(Level.ALL);
                logger.setAdditive(false); // 禁止繼承父 Logger 的 Appender

                // 創(chuàng)建 Appender
                RollingFileAppender<ILoggingEvent> appender = new RollingFileAppender<>();
                appender.setContext(context);
                appender.setName("DYNAMIC_APPENDER_" + port);
                appender.setFile(currPath + "app.log");

                // 配置滾動策略
                TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<>();
                rollingPolicy.setContext(context);
                rollingPolicy.setParent(appender);
                rollingPolicy.setFileNamePattern(currPath + "log-%d{yyyy-MM-dd}.%i.log");
                rollingPolicy.setMaxHistory(3);
                rollingPolicy.setTotalSizeCap(FileSize.valueOf("7GB"));

                // 配置 SizeAndTimeBasedFNATP
                SizeAndTimeBasedFNATP<ILoggingEvent> triggeringPolicy = new SizeAndTimeBasedFNATP<>();
                triggeringPolicy.setContext(context);
                triggeringPolicy.setMaxFileSize(FileSize.valueOf("100MB"));
                triggeringPolicy.setTimeBasedRollingPolicy(rollingPolicy);
                rollingPolicy.setTimeBasedFileNamingAndTriggeringPolicy(triggeringPolicy);

                try {
                    rollingPolicy.start(); // 啟動滾動策略
                } catch (Exception e) {
                    log.error("Failed to start rolling or triggering policy:", e);
                }

                // 配置編碼器
                PatternLayoutEncoder encoder = new PatternLayoutEncoder();
                encoder.setContext(context);
                encoder.setPattern("%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n");
                encoder.start();
                // 設置 Appender
                appender.setRollingPolicy(rollingPolicy);
                appender.setEncoder(encoder);
                try {
                    appender.start();
                } catch (Exception e) {
                    log.error("Failed to start appender: ", e);
                }
                // 將 Appender 添加到 Logger
                logger.addAppender(appender);
                // 輸出日志
                logger.info("測試日志,輸出到動態(tài)路徑文件:{}", currPath);
            } catch (Exception e) {
                log.error("初始化logger失敗:{}", port);
                throw new RuntimeException(e);
            }
            LightManagerBo lightManagerBo = port2ManagerMap.computeIfAbsent(port, k -> new LightManagerBo());
            lightManagerBo.setLogger(logger);
        }
    }

到此這篇關于Java動態(tài)批量生成logback日志文件的示例的文章就介紹到這了,更多相關Java批量生成logback文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • SpringCloud Eureka 服務注冊實現(xiàn)過程

    SpringCloud Eureka 服務注冊實現(xiàn)過程

    這篇文章主要介紹了SpringCloud Eureka 服務注冊實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Spring?Boot?整合?Thymeleaf?實例分享

    Spring?Boot?整合?Thymeleaf?實例分享

    這篇文章主要分享了Spring?Boot整合Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關于其更多相關內(nèi)容,需要的小伙伴可以參考一下
    2022-05-05
  • Java編程實現(xiàn)漢字按字母順序排序的方法示例

    Java編程實現(xiàn)漢字按字母順序排序的方法示例

    這篇文章主要介紹了Java編程實現(xiàn)漢字按字母順序排序的方法,結(jié)合具體實例形式分析了java編碼轉(zhuǎn)換及字母排序相關操作技巧,需要的朋友可以參考下
    2017-07-07
  • 詳解如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API

    詳解如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API

    作為后端程序員,我們的日常工作就是調(diào)用一些第三方服務,將數(shù)據(jù)存入數(shù)據(jù)庫,返回信息給前端。本文為大家介紹了如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API,需要的可以參考一下
    2022-12-12
  • Java JSON提取工具JsonExtractor的使用

    Java JSON提取工具JsonExtractor的使用

    本文主要介紹了Java JSON提取工具JsonExtractor的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • idea實現(xiàn)類快捷生成接口方法示例

    idea實現(xiàn)類快捷生成接口方法示例

    這篇文章主要介紹了idea實現(xiàn)類快捷生成接口方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • java多線程應用實現(xiàn)方法

    java多線程應用實現(xiàn)方法

    以前沒有寫筆記的習慣,現(xiàn)在慢慢的發(fā)現(xiàn)及時總結(jié)是多么的重要了,呵呵。雖然才大二,但是也快要畢業(yè)了,要加油
    2012-11-11
  • java -D參數(shù)設置系統(tǒng)屬性無效問題及解決

    java -D參數(shù)設置系統(tǒng)屬性無效問題及解決

    這篇文章主要介紹了java -D參數(shù)設置系統(tǒng)屬性無效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • IDEA創(chuàng)建Servlet程序的兩種實現(xiàn)方法

    IDEA創(chuàng)建Servlet程序的兩種實現(xiàn)方法

    Servlet是JavaWeb應用程序中不可或缺的組件之一,本文主要介紹了IDEA創(chuàng)建Servlet程序的兩種實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Spring事務失效的9大場景與解決方法

    Spring事務失效的9大場景與解決方法

    在日常開發(fā)中,我們經(jīng)常使用Spring事務,這篇文章主要來和大家聊聊Spring事務失效的 9 種場景,并提供了相應的解決方法,有需要的小伙伴可以參考一下
    2025-04-04

最新評論

台州市| 肇源县| 莱阳市| 固安县| 曲阜市| 澄城县| 红河县| 泰安市| 孟津县| 吉木乃县| 凤台县| 逊克县| 托克托县| 紫阳县| 宜兰县| 广元市| 洛宁县| 县级市| 凯里市| 且末县| 寿光市| 壤塘县| 新巴尔虎左旗| 常宁市| 赤峰市| 芦山县| 凤翔县| 定边县| 贺兰县| 财经| 盐山县| 兰坪| 和林格尔县| 荔浦县| 宣威市| 深圳市| 达州市| 临清市| 永清县| 甘孜县| 南汇区|