温馨提示×

debian tomcat日志乱码怎么解

小樊
51
2026-10-01 09:16:15
栏目: 智能运维

在 Debian 上运行 Tomcat 出现日志乱码,通常是字符编码不一致导致的(系统、Java、Tomcat、终端编码不同)。下面按常见原因一步步解决。


一、先确认系统编码(最常见原因)

1. 查看当前系统编码

locale

正常应类似:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

如果看到 POSIX / C / 空,就会乱码。

2. 设置 UTF-8(推荐)

sudo dpkg-reconfigure locales

勾选:

en_US.UTF-8
zh_CN.UTF-8

然后设为默认。

或临时生效:

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

二、Tomcat 启动脚本指定编码(关键)

修改 setenv.sh

路径一般在:

/opt/tomcat/bin/setenv.sh

(没有就新建)

加入:

export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"
export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

重启 Tomcat:

systemctl restart tomcat
# 或
/opt/tomcat/bin/shutdown.sh
/opt/tomcat/bin/startup.sh

三、Tomcat logging.properties 编码

编辑:

/opt/tomcat/conf/logging.properties

确保有:

java.util.logging.ConsoleHandler.encoding = UTF-8

如有 FileHandler:

java.util.logging.FileHandler.encoding = UTF-8

四、终端 / SSH 客户端编码

如果你是用 CRT / PuTTY / Xshell / Terminal 看日志:

  • 设置为 UTF-8
  • 不要使用 GBK

例如:

cat /opt/tomcat/logs/catalina.out

终端必须是 UTF-8。


五、应用自身日志(log4j / slf4j)

如果你用的是 log4j2 / logback:

log4j2.xml

<Configuration>
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout charset="UTF-8" pattern="%d %p %c{1.} %m%n"/>
    </Console>
  </Appenders>
</Configuration>

logback.xml

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
    <charset>UTF-8</charset>
    <pattern>%d %p %c %m%n</pattern>
  </encoder>
</appender>

六、快速自检清单 ✅

  • [ ] Debian locale 是 UTF-8
  • [ ] Tomcat 启动参数有 -Dfile.encoding=UTF-8
  • [ ] logging.properties 有 UTF-8
  • [ ] 终端是 UTF-8
  • [ ] 应用日志框架 charset=UTF-8

如果你愿意,可以把下面信息发我,我可以精准告诉你改哪里:

  1. Debian 版本
  2. Tomcat 版本
  3. 用的日志框架(log4j / logback / j.u.l)
  4. 乱码示例(截图或文字)

我可以直接给你最小修改方案。

0 踩