tomcat启动springboot项目输出的日志有两个层次。一是tomcat自身的输出,一个是springboot项目的输出。
tomcat输出乱码
tomcat的conf/logging.properties文件中
windows平台下默认是GBK的编码,但是部分tomcat这里设置成了UTF-8,导致了中文乱码
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
Springboot项目输出
-
springboot 2 之后的版本
application.properties文件中:
logging.charset.console=GBK
2.0之后提供了这个配置,但默认取了系统的编码,所以大概率不会出现乱码。
-
springboot 1
1.0的比较容易出现乱码,但是没有logging.charset.console这个配置。
此时可以选择添加具体日志实现组件的配置文件。默认是logback的配置文件:
logback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy
设置编码
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="CONSOLE_LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%5p) | %green(%thread) | %boldMagenta(%logger{20}) | %cyan(%msg%n)"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>GBK</charset>
</encoder>
</appender>
<root level="info,debug">
<appender-ref ref="console"/>
</root>
</configuration>