在 Debian 上运行 Tomcat 出现日志乱码,通常是 字符编码不一致 导致的(系统、Java、Tomcat、应用编码不一致)。下面按常见原因和解决办法说明。
catalina.out 乱码localhost.log / manager.log 乱码????? 或 䏿–‡Tomcat 默认使用系统编码,Debian 默认可能是 POSIX 或 C,导致中文乱码。
bin/catalina.sh编辑 Tomcat 的启动脚本:
vi /opt/tomcat/bin/catalina.sh
在文件开头(JAVA_OPTS 附近)添加:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
或(推荐):
CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"
保存后重启 Tomcat:
systemctl restart tomcat
# 或
./bin/shutdown.sh
./bin/startup.sh
编辑:
vi /opt/tomcat/conf/logging.properties
确保以下内容存在(或改为 UTF-8):
java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.FileHandler.encoding = UTF-8
如果有 1catalina.org.apache.juli.FileHandler.encoding 也改成 UTF-8。
locale
如果看到:
LANG=C
LC_ALL=
说明是英文默认编码,会乱码。
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 service:
systemctl edit tomcat
添加:
[Service]
Environment="LANG=en_US.UTF-8"
Environment="LC_ALL=en_US.UTF-8"
Environment="JAVA_OPTS=-Dfile.encoding=UTF-8"
然后:
systemctl daemon-reload
systemctl restart tomcat
如果是应用日志乱码(不是 Tomcat 自带日志):
<Configuration>
<Properties>
<Property name="encoding">UTF-8</Property>
</Properties>
</Configuration>
<encoder>
<charset>UTF-8</charset>
</encoder>
echo $LANG
java -XshowSettings:properties -version 2>&1 | grep encoding
ps aux | grep tomcat
确保:
file.encoding = UTF-8LANG=*.UTF-8LANG=en_US.UTF-8
JAVA_OPTS=-Dfile.encoding=UTF-8
logging.properties => UTF-8
日志中:
2026-01-15 10:00:00 中文日志正常显示
如果你愿意,可以贴出:
locale 输出我可以直接帮你精准改 ✅