温馨提示×

Tomcat日志编码如何设置

小樊
33
2026-07-13 09:38:16
栏目: 智能运维

Tomcat 中,日志编码主要涉及 Tomcat 自带日志(JULI)应用日志(如 Log4j / Logback) 以及 控制台编码。下面按常见场景说明如何设置。


一、Tomcat 自身日志编码(JULI,默认日志)

Tomcat 使用 java.util.logging(JULI),配置文件在:

$TOMCAT_HOME/conf/logging.properties

1️⃣ 设置文件编码(重点是 UTF-8

logging.properties 中增加或修改:

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

示例:

handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.level = FINE

这是解决 Tomcat 日志中文乱码最关键的一步


二、控制台(catalina.out)编码问题

1️⃣ Linux / macOS

确保:

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

或在 catalina.sh 中:

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

2️⃣ Windows(非常常见乱码)

Windows 控制台默认是 GBK,需要显式指定:

方法一:修改 Tomcat 启动参数

bin/catalina.batsetenv.bat

set JAVA_OPTS=-Dfile.encoding=UTF-8

⚠️ 注意:
Windows 控制台 UTF-8 支持不完整,有时仍会乱码,这是系统限制。


三、应用日志编码(Log4j / Logback)

✅ Logback(推荐)

logback.xml

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

✅ Log4j2

log4j2.xml

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

✅ Log4j 1.x

log4j.appender.file.encoding=UTF-8

四、JVM 全局编码(兜底方案)

bin/setenv.sh(Linux)或 setenv.bat(Windows)中:

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

⚠️ 不推荐作为唯一方案,但常作为辅助手段。


五、常见排查顺序(推荐)

  1. 确认 logging.properties 中编码
  2. 确认 JVM 参数 -Dfile.encoding=UTF-8
  3. 应用日志框架是否指定 UTF-8
  4. 终端 / 系统编码是否支持 UTF-8

六、快速总结

场景 设置方式
Tomcat 日志 logging.propertiesencoding=UTF-8
catalina.out JAVA_OPTS=-Dfile.encoding=UTF-8
Logback <charset>UTF-8</charset>
Log4j2 charset="UTF-8"
Windows 乱码 系统限制,尽量用 UTF-8 + 文件日志

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

  • Tomcat 版本
  • 操作系统
  • 使用的是 Log4j / Logback / 默认日志

我可以给你一份完全对应你环境的配置示例

0