温馨提示×

tomcat日志乱码ubuntu为何

小樊
37
2026-09-12 11:37:37
栏目: 智能运维

Ubuntu 上 Tomcat 日志乱码,通常不是 Tomcat 本身“坏了”,而是字符编码不一致导致的。下面按常见原因给你讲清楚。


一、最常见原因:系统 / 终端编码不是 UTF-8

Ubuntu 默认一般是 UTF-8,但有时:

  • 服务器是最小化安装
  • 通过 SSH 连接工具编码设置不对
  • Locale 没正确生成

检查编码

locale

正常应看到:

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

如果不是 UTF-8:

sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8

并重新登录。


二、Tomcat 自身未指定 UTF-8(非常常见)

Tomcat 默认不一定用 UTF-8 写日志

1️⃣ 修改 catalina.sh

bin/catalina.sh 中加入:

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

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

2️⃣ 修改 logging.properties

Tomcat 使用 JUL(java.util.logging)

编辑:

conf/logging.properties

确保有:

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

三、应用日志框架编码不对(Log4j / Logback)

如果你用的是 Logback

<encoder>
    <charset>UTF-8</charset>
    <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>

如果是 Log4j2

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

四、SSH 客户端编码问题(容易误判)

即使 Tomcat 正常,如果:

  • Xshell / PuTTY / SecureCRT
  • 终端编码不是 UTF-8

也会看到“乱码”。

✅ 解决:

  • Xshell:属性 → 终端 → 编码 → UTF-8
  • PuTTY:Window → Translation → UTF-8

五、日志文件本身是 GBK(历史原因)

有时日志是 Windows 上传的应用打出的 GBK 日志

查看:

file catalina.out

如果是:

ISO-8859 / GBK

用:

iconv -f GBK -t UTF-8 catalina.out

六、快速自检清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] Tomcat 加了 -Dfile.encoding=UTF-8
  • [ ] logging.properties 指定 UTF-8
  • [ ] 应用日志框架 charset=UTF-8
  • [ ] SSH 客户端编码 UTF-8

七、一句话总结

Ubuntu 上 Tomcat 日志乱码,99% 是“系统编码 + Tomcat 编码 + 客户端编码”不一致导致的,不是 Tomcat bug。

如果你愿意,可以把:

  • locale 输出
  • logging.properties
  • 乱码截图或示例

发给我,我可以精准定位是哪一种乱码

0