欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

應(yīng)用場景舉個(gè)例子:

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

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

    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");

                // 配置滾動(dòng)策略
                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(); // 啟動(dòng)滾動(dòng)策略
                } 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();
                // 設(shè)置 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("測試日志,輸出到動(dòng)態(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);
        }
    }

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

相關(guān)文章

最新評(píng)論