ubuntu

Ubuntu下Tomcat日志乱码怎么办

小樊
47
2025-10-15 19:21:27
栏目: 智能运维

Ubuntu下Tomcat日志乱码解决方法

1. 检查并统一系统默认编码

Ubuntu系统的默认编码需与Tomcat日志编码一致(推荐UTF-8)。通过以下命令查看当前系统编码:

locale

若未设置为UTF-8,可通过修改/etc/default/locale文件(需root权限)添加以下内容:

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

保存后执行source /etc/default/locale使设置生效。

2. 修改Tomcat的JVM启动参数(关键步骤)

Tomcat的JVM需明确指定日志编码为UTF-8。编辑Tomcat的bin/catalina.sh文件(Ubuntu下路径通常为/opt/tomcat/bin/catalina.sh/var/lib/tomcat9/bin/catalina.sh),在JAVA_OPTS变量中添加以下参数:

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

保存后重启Tomcat使配置生效:

sudo systemctl restart tomcat

此步骤可解决大部分JVM层面输出的日志乱码问题。

3. 调整Tomcat日志配置文件(logging.properties)

Tomcat的日志处理器(如控制台输出)需单独设置编码。打开conf/logging.properties文件,找到java.util.logging.ConsoleHandler.encoding配置项,将其值修改为UTF-8

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

若日志仍乱码,可尝试将其他Handler(如FileHandler)的编码也设置为UTF-8,例如:

1catalina.org.apache.juli.FileHandler.encoding = UTF-8
2localhost.org.apache.juli.FileHandler.encoding = UTF-8

修改后重启Tomcat。

4. 配置Tomcat Connector的URIEncoding

若日志中包含URL参数或请求路径的乱码(如中文参数),需修改conf/server.xml文件中的Connector配置,添加URIEncoding="UTF-8"属性:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8" />

此配置确保Tomcat正确解析URL中的非ASCII字符,避免日志中URL乱码。

5. 检查第三方日志框架配置(如Log4j/Logback)

若项目使用了Log4j或Logback等第三方日志框架,需额外配置其编码。例如:

注意事项

通过以上步骤,可彻底解决Ubuntu下Tomcat日志乱码问题。

0
看了该问题的人还看了