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_HOME/bin/catalina.sh
在文件开头加:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
export JAVA_OPTS
或(推荐):
CATALINA_OPTS="-Dfile.encoding=UTF-8"
重启 Tomcat。
编辑:
$TOMCAT_HOME/conf/logging.properties
确保:
java.util.logging.ConsoleHandler.encoding = UTF-8
如果是老版本 Tomcat,可能默认是 GBK,改成 UTF-8。
如果你是用:
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
<encoder>
<pattern>%d %level %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<PatternLayout charset="UTF-8" pattern="%d %p %m%n"/>
如果你在 PuTTY / Xshell:
locale 是 UTF-8-Dfile.encoding=UTF-8如果你愿意,可以把:
发我,我可以直接帮你精准改配置。