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

springboot的logback配置源碼解讀

 更新時(shí)間:2023年11月01日 08:39:17   作者:codecraft  
這篇文章主要為大家介紹了springboot的logback配置,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

本文主要研究一下springboot的logback配置

defaults.xml

org/springframework/boot/logging/logback/defaults.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
Default logback configuration provided for import
-->
<included>
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
    <logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
    <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
    <logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
    <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
    <logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
    <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
    <logger name="org.springframework.boot.actuate.endpoint.jmx" level="WARN"/>
</included>
spring-boot包含了defaults.xml,它定義了一些conversionRule、CONSOLE_LOG_PATTERN、FILE_LOG_PATTERN變量以及一些logger

console-appender.xml

org/springframework/boot/logging/logback/console-appender.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
Console appender logback configuration provided for import, equivalent to the programmatic
initialization performed by Boot
-->
<included>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
</included>
console-appender.xml定義了CONSOLE這個(gè)appender,其pattern取決于CONSOLE_LOG_PATTERN變量

file-appender.xml

org/springframework/boot/logging/logback/file-appender.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
File appender logback configuration provided for import, equivalent to the programmatic
initialization performed by Boot
-->
<included>
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <cleanHistoryOnStart>${LOG_FILE_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
            <fileNamePattern>${ROLLING_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-7}</maxHistory>
            <totalSizeCap>${LOG_FILE_TOTAL_SIZE_CAP:-0}</totalSizeCap>
        </rollingPolicy>
    </appender>
</included>
file-appender.xml定義了RollingFileAppender這個(gè)appender,其pattern取決于FILE_LOG_PATTERN,其file取決于LOG_FILE變量,rollingPolicy為SizeAndTimeBasedRollingPolicy,cleanHistoryOnStart默認(rèn)為false,fileNamePattern默認(rèn)為${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz},maxFileSize默認(rèn)為10MB,maxHistory默認(rèn)為7,totalSizeCap默認(rèn)為0

base.xml

org/springframework/boot/logging/logback/base.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
Base logback configuration provided for compatibility with Spring Boot 1.1
-->
<included>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${xml.io.tmpdir:-/tmp}}}/spring.log}"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</included>
base.xml引入了defaults.xml、console-appender.xml、file-appender.xml,它主要是定義了LOG_FILE路徑,默認(rèn)為${xml.io.tmpdir:-/tmp}}}/spring.log

logback.xml示例

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
        <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
        </root>
        <logger name="org.springframework.web" level="DEBUG"/>
    </configuration>

loadDefaults

org/springframework/boot/logging/logback/LogbackLoggingSystem.xml

@Override
    protected void loadDefaults(LoggingInitializationContext initializationContext, LogFile logFile) {
        LoggerContext context = getLoggerContext();
        stopAndReset(context);
        boolean debug = Boolean.getBoolean("logback.debug");
        if (debug) {
            StatusListenerConfigHelper.addOnConsoleListenerInstance(context, new OnConsoleStatusListener());
        }
        LogbackConfigurator configurator = debug ? new DebugLogbackConfigurator(context)
                : new LogbackConfigurator(context);
        Environment environment = initializationContext.getEnvironment();
        context.putProperty(LoggingSystemProperties.LOG_LEVEL_PATTERN,
                environment.resolvePlaceholders("${logging.pattern.level:${LOG_LEVEL_PATTERN:%5p}}"));
        context.putProperty(LoggingSystemProperties.LOG_DATEFORMAT_PATTERN, environment.resolvePlaceholders(
                "${logging.pattern.dateformat:${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}"));
        context.putProperty(LoggingSystemProperties.ROLLING_FILE_NAME_PATTERN, environment
                .resolvePlaceholders("${logging.pattern.rolling-file-name:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}"));
        new DefaultLogbackConfiguration(initializationContext, logFile).apply(configurator);
        context.setPackagingDataEnabled(true);
    }
在沒(méi)有l(wèi)ogback.xml或者logback-spring.xml的時(shí)候,默認(rèn)走的loadDefaults,它定義了LOG_LEVEL_PATTERN、LOG_DATEFORMAT_PATTERN、ROLLING_FILE_NAME_PATTERN,然后創(chuàng)建DefaultLogbackConfiguration并作用了LogbackConfigurator

DefaultLogbackConfiguration

org/springframework/boot/logging/logback/DefaultLogbackConfiguration.xml

class DefaultLogbackConfiguration {
    private static final String CONSOLE_LOG_PATTERN = "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} "
            + "%clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} "
            + "%clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} "
            + "%clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";
    private static final String FILE_LOG_PATTERN = "%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} "
            + "${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";
    private static final DataSize MAX_FILE_SIZE = DataSize.ofMegabytes(10);
    private static final Integer MAX_FILE_HISTORY = 7;
    private final PropertyResolver patterns;
    private final LogFile logFile;
    DefaultLogbackConfiguration(LoggingInitializationContext initializationContext, LogFile logFile) {
        this.patterns = getPatternsResolver(initializationContext.getEnvironment());
        this.logFile = logFile;
    }
    void apply(LogbackConfigurator config) {
        synchronized (config.getConfigurationLock()) {
            base(config);
            Appender<ILoggingEvent> consoleAppender = consoleAppender(config);
            if (this.logFile != null) {
                Appender<ILoggingEvent> fileAppender = fileAppender(config, this.logFile.toString());
                config.root(Level.INFO, consoleAppender, fileAppender);
            }
            else {
                config.root(Level.INFO, consoleAppender);
            }
        }
    }
    //......
}
DefaultLogbackConfiguration類(lèi)似于defaults.xml, console-appender.xml及file-appender.xml,不過(guò)它把相關(guān)配置直接寫(xiě)在代碼里頭省去xml解析,效率高一點(diǎn);這里的apply代碼顯示執(zhí)行base(config),再是創(chuàng)建consoleAppender,再創(chuàng)建fileAppender

小結(jié)

spring-boot定義了defaults.xml提供了conversion rules、CONSOLE_LOG_PATTERN、FILE_LOG_PATTERN變量及一些常用logger;console-appender.xml則定義了使用CONSOLE_LOG_PATTERN的ConsoleAppender;file-appender.xml則定義了使用FILE_LOG_PATTERN及ROLLING_FILE_NAME_PATTERN的RollingFileAppender;而base.xml是兼容舊版springboot定義的,它集成了defaults.xml、console-appender.xml、file-appender.xml;而新版的話默認(rèn)是通過(guò)DefaultLogbackConfiguration來(lái)定義base、consoleAppender以及fileAppender的,省去xml解析,效率更高一點(diǎn)。

以上就是springboot的logback配置的詳細(xì)內(nèi)容,更多關(guān)于springboot logback配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java Set集合及其子類(lèi)HashSet與LinkedHashSet詳解

    Java Set集合及其子類(lèi)HashSet與LinkedHashSet詳解

    這篇文章主要介紹了Java Set集合及其子類(lèi)HashSet與LinkedHashSet詳解,文章通過(guò)Set集合存儲(chǔ)原理展開(kāi)文章主題相關(guān)介紹,感興趣的小伙伴可以參考一下
    2022-06-06
  • Java中各類(lèi)日期和時(shí)間轉(zhuǎn)換超詳析總結(jié)(Date和LocalDateTime相互轉(zhuǎn)換等)

    Java中各類(lèi)日期和時(shí)間轉(zhuǎn)換超詳析總結(jié)(Date和LocalDateTime相互轉(zhuǎn)換等)

    這篇文章主要介紹了Java中日期和時(shí)間處理的幾個(gè)階段,包括java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp、java.util.Calendar和java.util.GregorianCalendar等類(lèi),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Java中ArrayList類(lèi)的源碼解析

    Java中ArrayList類(lèi)的源碼解析

    本文主要介紹了Java中ArrayList類(lèi)的源碼解析,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • java實(shí)現(xiàn)客戶信息管理系統(tǒng)

    java實(shí)現(xiàn)客戶信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)客戶信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Java并發(fā)編程之同步容器

    Java并發(fā)編程之同步容器

    這篇文章主要介紹了Java并發(fā)編程之同步容器,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • 詳解如何在SpringBoot控制器中處理用戶數(shù)據(jù)

    詳解如何在SpringBoot控制器中處理用戶數(shù)據(jù)

    在 Spring Boot 應(yīng)用開(kāi)發(fā)中,控制器(Controller)扮演著至關(guān)重要的角色,它負(fù)責(zé)接收用戶請(qǐng)求、處理數(shù)據(jù)并返回響應(yīng),本文將深入淺出地講解如何在 Spring Boot 控制器中處理用戶數(shù)據(jù),包括獲取請(qǐng)求參數(shù)、處理表單提交、返回 JSON 數(shù)據(jù)等常見(jiàn)場(chǎng)景,需要的朋友可以參考下
    2025-05-05
  • mybatis plus使用redis作為二級(jí)緩存的方法

    mybatis plus使用redis作為二級(jí)緩存的方法

    這篇文章主要介紹了mybatis plus使用redis作為二級(jí)緩存的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 詳解MyBatis Mapper 代理實(shí)現(xiàn)數(shù)據(jù)庫(kù)調(diào)用原理

    詳解MyBatis Mapper 代理實(shí)現(xiàn)數(shù)據(jù)庫(kù)調(diào)用原理

    這篇文章主要介紹了詳解MyBatis Mapper 代理實(shí)現(xiàn)數(shù)據(jù)庫(kù)調(diào)用原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringBoot集成Spring AI構(gòu)建AI智能客服模塊

    SpringBoot集成Spring AI構(gòu)建AI智能客服模塊

    本文介紹了如何在SpringBoot項(xiàng)目中集成AI能力,包括創(chuàng)建項(xiàng)目、配置API密鑰、開(kāi)發(fā)AI對(duì)話服務(wù)以及測(cè)試驗(yàn)證,重點(diǎn)在于通過(guò)簡(jiǎn)單的示例展示AI對(duì)話的基本實(shí)現(xiàn),為后續(xù)更復(fù)雜的進(jìn)階功能鋪墊基礎(chǔ),需要的朋友可以參考下
    2026-04-04
  • 教你怎么用Java通過(guò)關(guān)鍵字修改pdf

    教你怎么用Java通過(guò)關(guān)鍵字修改pdf

    此方法只適合通過(guò)關(guān)鍵字位置,在pdf上添加字符直接上代碼,代碼比較長(zhǎng),大部分自己的理解都在代碼注釋中了,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

华亭县| 临澧县| 金阳县| 察隅县| 静海县| 昌平区| 灌云县| 合水县| 新巴尔虎左旗| 建水县| 双城市| 井冈山市| 长治市| 平和县| 洛浦县| 华池县| 许昌市| 祁连县| 铜梁县| 政和县| 新郑市| 长白| 高州市| 年辖:市辖区| 长治市| 西充县| 浙江省| 万源市| 杭锦旗| 万年县| 池州市| 许昌市| 千阳县| 巴青县| 清河县| 和林格尔县| 北流市| 特克斯县| 邻水| 青川县| 重庆市|