解决spring boot+logback 控制台日志中文乱码问题

本文介绍了在Spring Boot项目中遇到控制台日志中文乱码问题的解决方法。尝试通过设置Tomcat的VM Options -Dfile.encoding=UTF-8未成功。问题出在logback-spring.xml配置上,由于console-appender.xml的charset默认为utf8,而Tomcat使用GBK编码。解决方案包括自定义logback-spring.xml配置,或者在IDEA的启动脚本和Tomcat中添加-Dfile.encoding=UTF-8参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近弄公司的一个springboot项目,启动后一看到console输入日志乱码,想到在tomcat中设置jvm启动参数设置

在tomcat中设置VM Options   -Dfile.encoding=UTF-8,设置后依旧乱码

后来发现我的tomcat  Catalina Log 默认是GBK格式,修改后tomcat console日志已是中文,but新问题又来了,  项目日志还是乱码,之前用spring springMVC 项目中都用log4j,我想应该就是log4j的问题,结果没有找到,只看到一个logback-spring.xml的配置文件,发现问题也确实就出在这里

logback-spring.xml中引用springboot的logback/base.xml文件,base.xml又引用console-appender和file-appender,console-appender.xml中charset默认utf8,

<include resource="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:-${java.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>

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

 

第一种解决方法:自定义配置logback-spring.xml,配置日志级别和彩色日志,随你喜欢

logback中控制日志框架本身的日志级别从低往高依次: TRACE-->DEBUG-->INFO-->WARN-->ERROR-->FATAL

前面说到我的tomcat为GBK编码,所以我只好在logback-spring.xml中配置一段,并将charset注释掉,则获取默认格式,到此问题终于解决

<!--CONSOLE输出设置-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <!--彩色日志,格式化输出:%d表示日期,%-5level:级别从左显示5个字符宽度, %thread表示线程名,%msg:日志消息,%n是换行符 -->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) --- %green([%thread]) %logger - %blue(%msg%n)</pattern>
        <!--设置输出格式UTF-8/GBK 如果不设置,则获取默认格式-->
        <!--<charset>UTF-8</charset>-->
    </encoder>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
    <appender-ref ref="CONSOLE" />
</root>

第二种解决方法:较简单的解决方法

1. IDEA安装目录bin目录下如下2个文件,打开编辑,最后一行加: -Dfile.encoding=UTF-8,

2. tomcat也需要加 -Dfile.encoding=UTF-8,

3. logback-spring.xml中引用springboot的logback/base.xml文件,不对console做修改,最后重启IDEA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值