1. 程式人生 > >SpringBoot 配置控制檯彩色日誌輸出

SpringBoot 配置控制檯彩色日誌輸出

Spring預設使用Logback來進行日誌輸出,同時,控制檯不同引數輸出為不同的顏色,看起來逼格很高。

但是,當我們使用自己預設的配置的時候,彩色消失了。我想,在原始碼中,肯定有預設的配置,所以就去原始碼中招了一圈,很快就找到了,這裡和大家分享下。

預設的配置位置:(SpringBoot 2.1.0 版本)

org.springframework.boot.logging.logback 包下 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_LOG_PATTERN 引數就是預設的 輸出格式配置。我們可以通過在application.properties檔案中修改屬性logging.pattern.console屬性,來定製自己需要的彩色輸出。這裡,分享一下我自己修改的日誌輸出格式:

logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n

去掉了 執行緒名 節點,調整了類名的長度限制。效果展示: