温馨提示×

为何tomcat日志出现乱码

小樊
44
2026-10-05 13:45:15
栏目: 智能运维

Tomcat 日志出现乱码,通常不是 Tomcat“本身坏了”,而是字符编码在某一环节不一致导致的。下面按常见原因和解决办法系统说明。


一、最常见原因:控制台 / 系统编码 ≠ 日志编码

1. Windows 下 cmd / PowerShell 编码问题(非常常见)

Tomcat 默认日志输出到控制台时是 UTF-8,但 Windows 控制台默认是 GBK。

现象

  • catalina.out 或启动窗口中文乱码
  • 浏览器正常,日志乱码

解决办法

chcp 65001

再启动 Tomcat,或:

  • 修改注册表 / 终端默认编码为 UTF-8
  • 使用 IDE(IDEA / Eclipse)内置 Tomcat 启动

二、Tomcat 自身日志编码配置问题

2. logging.properties 编码未指定

Tomcat 使用 JUL(java.util.logging)

路径:

conf/logging.properties

确保包含:

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

三、JVM 启动参数编码不一致

3. JVM 默认文件编码不是 UTF-8

查看:

java -XshowSettings:properties -version

如果不是 UTF-8,在 catalina.sh / catalina.bat 中加:

-Dfile.encoding=UTF-8

例如:

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

四、应用日志框架编码问题(Logback / Log4j)

4. 应用日志文件编码错误

Logback 示例

<encoder>
  <pattern>%d %msg%n</pattern>
  <charset>UTF-8</charset>
</encoder>

Log4j2

<PatternLayout charset="UTF-8" pattern="%d %msg%n"/>

五、日志文件本身被错误打开

5. 编辑器编码不对

  • Notepad++ → 编码 → UTF-8
  • VS Code → 右下角切换编码
  • tail / less 时终端非 UTF-8

六、操作系统区域设置问题(Linux)

locale

如果不是:

LANG=en_US.UTF-8

可修改:

export LANG=en_US.UTF-8

七、快速自检清单 ✅

检查项 是否正确
JVM -Dfile.encoding=UTF-8 ✅
logging.properties UTF-8 ✅
应用日志框架 UTF-8 ✅
控制台 / 终端 UTF-8 ✅
编辑器 UTF-8 ✅

八、一句话总结

Tomcat 日志乱码 = 编码在“写日志 → 输出 → 显示”任一环节不一致

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

  • 操作系统(Windows / Linux)
  • 启动方式(脚本 / IDE)
  • 具体哪个日志文件乱码(catalina.out / 应用日志)

我可以给你精准的一行配置方案。

0 踩