SpringBoot 日誌配置LogBack(一)

常用的日誌類型有:Java Util Logging,commons logging,Log4j和slf4jspringboot三種日誌輸出均支持,如果使用spring-boot-starter依賴的(一般都使用這個),均默認使用的爲logback,又默認依賴slf4j作爲日誌輸出。

默認日誌Logback

    默認情況下,Spring Boot會用Logback來記錄日誌,並用INFO級別輸出到控制檯。在新建的springboot項目或是開源項目運行時,就會看到日誌輸出:

    這就是springboot默認的日誌輸出,查看源碼可知,默認配置爲org/springframework/boot/logging/logback/base.xml的日誌配置:

// defaults.xml
<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" />
</included>

//console-appender.xml
<included>
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
		</encoder>
	</appender>
</included>

//file-appender.xml
<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">
			<fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
			<maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
			<maxHistory>${LOG_FILE_MAX_HISTORY:-0}</maxHistory>
		</rollingPolicy>
	</appender>
</included>

    上述的配置要點:

        defaults.xml文件主要對一些變量做聲明,並配置幾個重要的類的日誌輸出,而base.xml則是通過root進行配置日誌輸出的方式有:控制檯輸出和日誌文件輸出,核心的一些配置在於日誌輸出格式(pattern),

        在defaults.xml中定義了默認的控制檯輸出的格式和文件日誌輸出格式(上面代碼標黃處),在自定義輸出格式可以參考其配置:

<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %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}}"/>

       其中clr表示顯示顏色設置(使用org.springframework.boot.logging.logback.ColorConverter類),官方文檔給出目前支持的顏色有blue,cyan,faint,green,magenta,red,yellow,可以針對異常的日誌做特殊的顏色輸出配置。

添加日誌依賴

    一般來說需要添加依賴spring-boot-starter-logging,該依賴內容就是SpringBoot默認的日誌框架LogBack,但是我們新建一個項目時並未添加該依賴照樣有日誌?那是因爲在大部分的spring-boot-starter中都包含了logging依賴,因此我們只需要有spring-boot-starter的依賴即可(如Thymeleaf,redis等)。

日誌文件自定義配置

 在進行自定義日誌配置前,需要先了解幾個概念:

    日誌輸出級別

    SpringBoot支持6種日誌級別(常用的只有四種),默認級別爲INFO,比設置級別低的日誌信息均不會輸出,按優先級別排序如下:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL    

   可以設置級別爲DEBUG來啓用調試模式(通常開發時使用),正常程序運行的每條日誌都會輸出。

    日誌輸出方式

    默認情況下,Spring Boot將日誌輸出到控制檯,不會寫到日誌文件

  1.     控制檯輸出,只在控制檯(console)中打印出日誌。
  2.     文件輸出,將輸出的日誌保存到文件中。通常會自定義配置日誌輸出的文件的保存路徑,文件命名格式,日誌格式等(更多時還需要區分日誌級別,每天產生一個日誌文件等)。

    如果要生成日誌文件,需要在application.properties/yml文件中配置logging.file或logging.path等屬性

logging.file    生成日誌文件路徑(可以相對路徑或絕對路徑)
logging.file.max-size    日誌文件大小閾值,默認情況下,日誌文件的大小達到10MB時會切分一次,產生新的日誌文件
logging.path    生成日誌文件目錄
logging.pattern.console    配置控制檯輸出日誌的格式
logging.pattern.dateformat    日期格式化
logging.pattern.file    文件格式
logging.pattern.level

使用logback-spring.xml配置(springprofile配置)

根節點<configuration>

子節點一:<springProfile>

子節點二:<Property>、<SpringProperty>

子節點三:<appender>

子節點四:<logger>

子節點五:<root>


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章