最新补充:
如果使用的是application.properties进行配置,则需要配置下面项目:
spring.output.ansi.enabled=always # 需要将其设置为always
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
去掉了 线程名 节点,调整了类名的长度限制。
如果希望使用自定义的logback.xml,则需要加上 相应的转换器类:
<substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/>
<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"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
效果展示:
最新补充:如果使用的是application.properties进行配置,则需要配置下面项目:spring.output.ansi.enabled=always # 需要将其设置为alwaysSpring默认使用Logback来进行日志输出,同时,控制台不同参数输出为不同的颜色,看起来逼格很高。但是,当我们使用自己默认的配置的时候,彩色消失了。我想,在源码中,肯定有默认的配置...
SLF4J——Simple
Logg
ing Facade For Java,它是一个针对于各类Java
日志
框架的统一Facade抽象。Java
日志
框架众多——常用的有java.util.
logg
ing, log4j,
logback
,commons-
logg
ing, Spring框架使用的是Jakarta Commons
Logg
ing API (JCL)。而SLF4J定义了统一的
日志
抽象接口,而真正的
日志
实现则是在运行时决定的——它提供了各类
日志
框架的binding。
Logback
是log4j框架
为
日志
配置
颜色
没有
颜色
的
日志
输出
,在日常开发环境中是很苦恼的一件事情。
logback
可以很好的解决这个问题,解决办法也非常简单:第一步:定义一个
颜色
patt
er
n变量 <prop
er
ty name="CONSOLE_LOG_PATT
ER
N"
value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldY
springboot
中的默认
配置
logback
/defaults.xml
<included>
<conv
er
sionRule conv
er
sionWord="clr" conv
er
t
er
Class="org.springframework.boot.
logg
ing.
logback
.ColorConv
er
t
er
" />
<conv
er
sionRule conv
er
sionWord="wex" conv
er
t
er
Class="org.springframework.boot.
Spring默认使用
Logback
来进行
日志
输出
,同时,
控制台
不同参数
输出
为不同的
颜色
,看起来逼格很高。但是,当我们使用自己默认的
配置
的时候,
彩色
消失了。我想,在源码中,肯定有默认的
配置
,所以就去源码中找了一圈,很快就找到了,这里和大家分享下。
默认的
配置
位置:(
SpringBoot
2.1.0 版本)
springboot
默认的
日志
格式
为:
%d{yyyy-MM-dd HH:...
2. 在
IDEA
中,点击Run -> Edit Configurations -> Configuration -> VM options,在VM options中添加以下参数:
-Dfile.encoding=UTF-8
3. 检查操作系统的默认编码是否与项目中的编码一致,如果不一致,需要将操作系统的默认编码设置为UTF-8。
4. 检查
控制台
所使用的字体是否支持中文字符集,如果不支持,需要更换字体。
5. 如果还是无法解决问题,可以考虑使用第三方
日志
库,如
logback
,来代替
springboot
默认的
日志
库。