Logback在idea Terminal中文乱码

Logback在idea Terminal中文乱码

环境:w10,  idea2018,  jdk1.8。
内容:mvn工程,写了一个main函数,pom中添加了springBoot依赖,用logback日志输出信息。
问题:用run命令,中文显示正常。但是,在Terminal,运行mvn spring-boot:run,中文乱码。

解决过程
   1.在网上搜了很多,大概总结有四条。
     1.1 在pom文件里面加utf-8配置。
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                  <!--增加jvm参数-->
                  <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
             </configuration>
        </plugin>
        Terminal下运行,还是中文乱码。
     1.2 idea的安装bin目录下,在idea.exe.vmoptions、idea64.exe.vmoptions文件最末尾添加utf-8设置:
         -Dfile.encoding=UTF-8     
         之前已经设置好了。应该就不是这个原因。
     1.3 idea的setting->Build->Build Tools->Maven->Runner下配置VM Options:
         -Dfile.encoding=GBK。
         Terminal下运行,还是中文乱码。
         改成:-Dfile.encoding=UTF-8。
         也不行。
     1.4 注释掉logback.xml中的<charset>行。(不知道为何)
         Terminal下运行,还是中文乱码。
     
故障现象再次确认
        logback日志文件,配置utf-8字符集,运行run命令时,程序日志提示信息中文显示正常。 但是,在Terminal,运行mvn spring-boot:run,日志提示信息中文乱码。
    咨询同事波哥,了解到一个情况:终端命令行运行程序,调用的是本地win10的字符集GBK,强改日志字符集为UTF-8无用。
    
解决办法:
     logback日志配置文件中的字符集改为GBK,Terminal下运行,中文显示正常。
     如果要run Main函数,再改下日志配置文件logback.xml的字符集为utf-8,中文日志提示信息才能正常显示。目前暂未找到两全其美的解决方法。
     
     
附 :logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="30 seconds">
    <property name="log.dir" value="target/logs"/>
    <property name="encoding" value="UTF-8"/>
    <property name="encoding2" value="GBK"/>
    <property name="plain" value="%msg%n"/>
    <property name="std" value="%d{HH:mm:ss.SSS}[%thread][%-5level]%msg %X"/>
    <property name="normal" value="%d{yyyy-MM-dd:HH:mm:ss.SSS}[%thread][%-5level]%msg"/>
    <!--控制台输出  -->    
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${plain}</pattern>
            <charset>${encoding2}</charset>        
        </encoder>
    </appender>

    <!-- 时间滚动输出 level 为ALL 日志 -->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${log.dir}/file.log</File>        
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${log.dir}/file.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${std}</pattern>
            <charset>${encoding2}</charset>        
        </encoder>
    </appender>
    <logger name="root">
        <level value="ERROR"/>
    </logger>
    <logger name="com.imooc">
        <level value="DEBUG"/>
    </logger>
    <root>
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>
</configuration>     

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值