在 Ubuntu 上 Tomcat 日志乱码(如 catalina.out、localhost.log 出现乱码),通常不是 Tomcat 本身坏了,而是 字符编码不一致 导致的。下面按「最常见 → 较少见」的顺序给你解决方案。
locale
如果看到:
LANG=
LC_ALL=
或不是 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
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
编辑:
$CATALINA_HOME/conf/logging.properties
确保有:
java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.FileHandler.encoding = UTF-8
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>
如果你是:
请确认:
✅ 终端编码 = UTF-8
✅ 字体支持中文
如果旧日志已经乱码,无法恢复,只能:
rm catalina.out
重启 Tomcat 重新生成。
locale
echo $LANG
ps -ef | grep tomcat
确认:
-Dfile.encoding=UTF-8你可以把下面信息发我,我可以精准定位:
我可以直接帮你写一份 完整配置文件。