温馨提示×

ubuntu tomcat日志乱码怎么破

小樊
43
2026-09-15 17:57:25
栏目: 智能运维

Ubuntu 上 Tomcat 日志乱码,通常是字符集不一致导致的(系统、Tomcat、Java、日志框架四者任一不对齐都会乱码)。下面按「从最常见到进阶」给你一套排查和解决思路。


一、先确认系统字符集(最常见原因)

locale

如果不是 UTF-8,先修系统:

sudo apt install locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8

重启服务器或重新登录。

推荐统一用 UTF-8


二、Tomcat 启动脚本加 JVM 参数(非常关键)

编辑:

$TOMCAT_HOME/bin/catalina.sh

在文件开头加:

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

或(推荐):

CATALINA_OPTS="-Dfile.encoding=UTF-8"

重启 Tomcat。


三、Tomcat 自身 logging.properties(控制台乱码)

编辑:

$TOMCAT_HOME/conf/logging.properties

确保:

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

如果是老版本 Tomcat,可能默认是 GBK,改成 UTF-8。


四、用 systemd 启动 Tomcat 的情况(很容易踩坑)

如果你是用:

systemctl start tomcat

那环境变量可能没生效。

编辑:

/etc/systemd/system/tomcat.service

加:

[Service]
Environment="LANG=zh_CN.UTF-8"
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8"

然后:

systemctl daemon-reload
systemctl restart tomcat

五、应用日志框架乱码(log4j / logback)

logback 示例

<encoder>
  <pattern>%d %level %msg%n</pattern>
  <charset>UTF-8</charset>
</encoder>

log4j2

<PatternLayout charset="UTF-8" pattern="%d %p %m%n"/>

六、SSH / 终端显示问题(不是 Tomcat 的问题)

如果你在 PuTTY / Xshell:

  • 设置终端编码为 UTF-8
  • 不要选 GBK

七、快速自检清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] Tomcat 启动参数有 -Dfile.encoding=UTF-8
  • [ ] logging.properties 编码 UTF-8
  • [ ] 应用日志框架 charset=UTF-8
  • [ ] systemd 环境变量配了

如果你愿意,可以把:

  • Tomcat 版本
  • 启动方式(脚本 / systemd)
  • 乱码截图或日志样例

发我,我可以直接帮你精准改配置。

0