现象

  • IDEA 控制台打印正常
  • Linux 服务器有的正常有的中文乱码

原因

Logback默认使用平台的编码,
通过命令查看linux字符集:
执行 locale 命令 查看 LANG 属性
有问题服务器的字符集为 en_US.UTF-8,没有问题的服务器字符集为 zh_CN.UTF-8

解决方案

我们需要自己设置指定字符集
在 appender 中添加属性 GBK

<appender name="FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <param name="Encoding" value="GBK" />
    <file>${LOG_DIR}/${APP_NAME}.log</file>
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%15.15t] %-40.40logger{39} : %m%n</pattern>
      <charset class="java.nio.charset.Charset">GBK</charset>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${HISTORY_DIR}/%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <maxHistory>${MAX_HISTORY}</maxHistory>
      <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>${MAX_FILESIZE}</maxFileSize>
      </TimeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <prudent>true</prudent>
  </appender>
Logo

更多推荐