温馨提示×

ubuntu tomcat日志乱码怎么解

小樊
46
2026-10-21 03:00:06
栏目: 智能运维

在 Ubuntu 上 Tomcat 日志出现乱码,通常是字符编码不一致导致的(Java 默认编码、系统语言环境、日志框架编码、终端编码不一致)。下面按最常见原因 → 解决方案给你一套完整排查办法。


一、先确认乱码位置

先搞清楚是哪里乱码:

  1. catalina.out 乱码
  2. localhost.log / manager.log 乱码
  3. 浏览器访问页面乱码
  4. 终端 tail -f 看到乱码

一般 Tomcat 日志乱码,90% 是 catalina.out 或 log4j/logback 输出编码问题。


二、最常见原因 & 解决办法(重点)

✅ 1. 设置 Tomcat JVM 编码(最关键)

Tomcat 默认使用系统编码,Ubuntu 经常是 POSIX 或 ANSI_X3.4-1968,就会乱码。

修改 bin/catalina.sh

sudo vi /opt/tomcat/bin/catalina.sh

在文件开头(约 # OS specific support 前)加:

export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

或直接写死:

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

重启 Tomcat:

sudo systemctl restart tomcat

✅ 2. 设置 Ubuntu 系统编码

查看当前编码:

locale

如果不是 UTF-8,执行:

sudo apt install locales
sudo dpkg-reconfigure locales

选择:

zh_CN.UTF-8

或

en_US.UTF-8

然后:

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

✅ 3. log4j / logback 编码设置(非常常见)

如果你用的是 log4j 或 logback,必须显式指定编码。

log4j.properties

log4j.appender.file.encoding=UTF-8

logback.xml

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs/app.log</file>
    <encoder>
        <charset>UTF-8</charset>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

✅ 4. 控制台 / 终端乱码

如果你是 tail -f catalina.out 看到乱码:

locale

确保终端是 UTF-8(SecureCRT / Xshell / Terminal 都设为 UTF-8)

测试:

echo "中文测试"

如果这也乱码,就不是 Tomcat 的问题。


✅ 5. Tomcat 9+ 的 Logging 配置

Tomcat 自带 logging.properties:

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

确保:

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

三、快速自检清单 ✅

echo $LANG
echo $LC_ALL
java -XshowSettings:properties -version 2>&1 | grep encoding

理想结果:

LANG=zh_CN.UTF-8
file.encoding = UTF-8

四、最常见组合(直接抄)

Ubuntu + Tomcat 9 + UTF-8 中文日志:

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
JAVA_OPTS="-Dfile.encoding=UTF-8"

如果你愿意,可以告诉我:

  • Tomcat 版本
  • 用的是 log4j / logback / 原生 logging
  • 乱码截图或示例

我可以直接帮你给一份可复制的配置。

0 踩