IntelliJ IDEA使用Tomcat8启动项目时,Tomcat日志乱码处理

1. 本地的软件版本说明

Tomcat版本:8.5.27
IntelliJ IDEA版本:Ultimate 2021.1

2. 现象描述

Tomcat部署启动ssm项目时发现三个地方的日志乱码:
Serve:服务控制台日志
Tomcat Localhost Log:Tomcat本地日志
Tomcat Catalina Log:Tomcat Catalina日志

详细参考下图:
IntelliJ IDEA使用Tomcat8启动项目时,Tomcat日志乱码处理_第1张图片

3. 问题出现原因分析

一开始一直以为是idea的问题,通过各方验证,是项目中文件的编码格式与tomcat中的日志文件编码格式不一致造成的。
当我将tomcat的日志文件编码格式修改之后发现项目中的System.out.print依旧是乱码,这时候在定位发现是jvm的编码不对,需要修改jvm的编码

4. 解决方案

首先确认项目中文件的编码格式,随便在idea打开一个项目中的文件,在右下角可以看到这个文件的编码格式。如果发现项目中文件的编码格式不一致,最好将所有文件编码格式做一下统一。
IntelliJ IDEA使用Tomcat8启动项目时,Tomcat日志乱码处理_第2张图片
确认了格式之后就是修改了,考虑到我们可能负责很多项目,而不同项目有不同的编码格式,因此给出两个方案

  • 方案一、只修改当前项目: 在idea的Tomcat配置界面添加启动参数:-Dfile.encoding=UTF-8 (你的项目的编码格式)
    IntelliJ IDEA使用Tomcat8启动项目时,Tomcat日志乱码处理_第3张图片

  • 方案二、 直接从tomcat根源上统一编码格式:

在tomcat的路径下找个catalina.bat文件(\bin\catalina.bat)
找到该文件中的JAVA_OPTS设置的地方:
set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
在后面添加编码参数: -Dfile.encoding=UTF-8

最终结果如下:
set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dfile.encoding=UTF-8"

IntelliJ IDEA使用Tomcat8启动项目时,Tomcat日志乱码处理_第4张图片

你可能感兴趣的:(IntelliJ,IDEA,tomcat,intellij-idea,idea)