温馨提示×

ubuntu tomcat日志乱码怎么解决

小樊
56
2026-10-06 13:16:41
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志乱码(如 catalina.out、localhost.log 出现乱码),通常不是 Tomcat 本身坏了,而是 字符编码不一致 导致的。下面按「最常见 → 较少见」的顺序给你解决方案。


一、最常见原因:Linux 控制台 / 文件编码 ≠ UTF-8

1️⃣ 查看当前系统编码

locale

如果看到:

LANG=
LC_ALL=

或不是 UTF-8,就会乱码。

2️⃣ 修改系统编码为 UTF-8

sudo apt install locales
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 启动脚本未指定编码(非常常见)

修改 catalina.sh

编辑:

sudo vim $CATALINA_HOME/bin/catalina.sh

在文件开头或 JAVA_OPTS 处加:

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

✅ 推荐直接加在:

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

重启 Tomcat:

sudo systemctl restart tomcat
# 或
./shutdown.sh
./startup.sh

三、log4j / logging.properties 编码问题

1️⃣ JUL(默认 Tomcat 日志)

编辑:

$CATALINA_HOME/conf/logging.properties

确保有:

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

2️⃣ 如果你用 log4j / log4j2

log4j.properties

log4j.appender.file.encoding=UTF-8

log4j2.xml

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

四、IDE / SSH 客户端编码问题(容易被忽略)

如果你是:

  • Xshell
  • SecureCRT
  • PuTTY
  • FinalShell

请确认: ✅ 终端编码 = UTF-8
✅ 字体支持中文


五、日志文件本身已经是乱码(历史文件)

如果旧日志已经乱码,无法恢复,只能:

rm catalina.out

重启 Tomcat 重新生成。


六、快速自检清单 ✅

locale
echo $LANG
ps -ef | grep tomcat

确认:

  • ✅ 系统 UTF-8
  • ✅ Tomcat 启动参数含 -Dfile.encoding=UTF-8
  • ✅ logging 编码 UTF-8
  • ✅ 终端 UTF-8

七、如果你愿意

你可以把下面信息发我,我可以精准定位:

  1. Tomcat 版本
  2. Ubuntu 版本
  3. 用的是 log4j 还是默认日志
  4. 乱码截图或示例文字

我可以直接帮你写一份 完整配置文件。

0 踩