温馨提示×

Debian Tomcat日志乱码怎么办

小樊
32
2026-08-24 01:37:48
栏目: 智能运维

Debian 上 Tomcat 日志出现乱码,通常是 字符编码不一致 造成的,常见原因和解决办法如下(按出现频率排序):


一、最常见原因:系统 / JVM 默认编码不是 UTF‑8

1️⃣ 检查系统编码

locale

如果看到:

LANG=en_US
LC_ALL=

或不是 UTF-8,就可能导致乱码。

解决:设置为 UTF‑8

sudo dpkg-reconfigure locales

勾选:

en_US.UTF-8
zh_CN.UTF-8

然后执行:

sudo update-locale LANG=en_US.UTF-8

重启服务器或重新登录。


二、Tomcat 自身 JVM 编码问题(非常常见)

2️⃣ 设置 Tomcat 使用 UTF‑8

编辑 Tomcat 启动参数:

方式一:setenv.sh(推荐)

sudo nano /opt/tomcat/bin/setenv.sh

添加:

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

如果没有该文件,新建即可。

方式二:修改 catalina.sh

(不推荐,升级会覆盖)

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

重启 Tomcat:

sudo systemctl restart tomcat

三、日志文件本身是 UTF‑8,但查看方式不对

3️⃣ 用 less 查看日志

less /opt/tomcat/logs/catalina.out

如果乱码:

export LESSCHARSET=utf-8
less catalina.out

或:

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

四、Tomcat 日志配置编码问题(logging.properties)

4️⃣ 修改 logging.properties

sudo nano /opt/tomcat/conf/logging.properties

确保包含:

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

五、Web 应用日志乱码(log4j / logback)

5️⃣ logback 示例

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

6️⃣ log4j2 示例

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

六、systemd 服务导致乱码(Debian 常见)

如果是 systemd 启动 Tomcat:

sudo nano /etc/systemd/system/tomcat.service

[Service] 下添加:

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

然后:

sudo systemctl daemon-reload
sudo systemctl restart tomcat

七、快速自检清单 ✅

echo $LANG
java -XshowSettings:properties -version 2>&1 | grep file.encoding
ps aux | grep tomcat

八、总结(最推荐方案)

90% 情况只需做这两步:

  1. 系统 locale 设为 UTF-8
  2. Tomcat 启动参数加:
-Dfile.encoding=UTF-8

如果你愿意,可以把下面信息发我,我可以精确判断是哪一种乱码:

  • Debian 版本
  • Tomcat 版本
  • 乱码截图或示例文字
  • 日志是 catalina.out 还是应用日志

0