温馨提示×

ubuntu tomcat日志乱码怎么办

小樊
44
2026-08-31 11:26:47
栏目: 智能运维

Ubuntu 下 Tomcat 日志乱码,通常是 字符编码不一致 导致的,重点检查 系统编码、Tomcat 编码、日志框架编码。下面按「最常见 → 少见」给你一套排查与解决方案。


一、先确认系统编码(最常见原因)

1️⃣ 查看当前系统编码

locale

正常应看到:

LANG=en_US.UTF-8
# 或
LANG=zh_CN.UTF-8

如果看到:

LANG=C

或没有 UTF-8,大概率会乱码。

2️⃣ 修改为 UTF-8(推荐)

编辑:

sudo vim /etc/default/locale

写入(示例):

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

然后执行:

sudo locale-gen en_US.UTF-8
source /etc/default/locale

重启服务器或 Tomcat。


二、Tomcat 启动脚本编码(非常关键)

1️⃣ 修改 catalina.sh

编辑:

vim /opt/tomcat/bin/catalina.sh

在文件开头或 JAVA_OPTS 中加入:

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

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

这是解决 Tomcat 日志乱码的核心设置


三、Tomcat logging.properties(Tomcat 自带日志)

编辑:

vim /opt/tomcat/conf/logging.properties

确保:

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

如果你的 catalina.out 乱码,这一步非常重要。


四、如果你用的是 logback / log4j(Spring 项目常见)

logback.xml

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

log4j2.xml

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

五、catalina.out 在 systemd 下乱码

如果你是用 systemd 启动 Tomcat:

sudo vim /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

六、终端 / SSH 乱码(不是 Tomcat 问题)

如果你是在 Windows + SSH 看日志乱码:

✅ 解决方法:

  • 使用 UTF-8 终端
  • Windows Terminal / MobaXterm / Xshell(编码设为 UTF-8)
  • 或:
export LANG=en_US.UTF-8

七、快速自检清单 ✅

检查项 是否 UTF-8
locale
catalina.sh
logging.properties
logback/log4j
终端

八、最常见“一句话解决”

90% 的情况,执行下面两步就够了:

# 1. 系统编码
sudo apt install locales -y
sudo locale-gen en_US.UTF-8

# 2. Tomcat JVM 编码
export JAVA_OPTS="-Dfile.encoding=UTF-8"

如果你愿意,可以把下面信息发我,我可以精准定位到哪一步出问题

  • Tomcat 版本
  • Ubuntu 版本
  • 是否用 systemd
  • 乱码是 catalina.out 还是 logback 日志
  • 乱码截图或示例文字

我可以一步一步帮你对 ✅

0