IDEA运行Tomcat,控制台日志乱码

Posted n1ckeyqu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA运行Tomcat,控制台日志乱码相关的知识,希望对你有一定的参考价值。

一、信息

IDEA:2019.1

Tomcat:9.0.24

二、问题描述

技术图片

server中日志正常显示,但Tomcat Catalina Log日志乱码。

 

三、解决思路

既然出了乱码,那肯定是编码不统一,所以我将IDEA中设置编码的地方(包括IDEA的配置文件)全都设置成了UTF-8,结果不但问题没有解决,我的server和tomcat catalina log全部出现了乱码。

https://www.cnblogs.com/aligege/p/10550432.html,翻到了这篇博客,博主思路很正确,不应当只修改IDEA中的编码,还要修改Tomcat日志配置文件中的编码,让它们统一才行。

技术图片

 

 这里的默认值是GBKSS,修改成UTF-8,依旧乱码。改为GBK后,server的日志正常了,tomcat catalina log还是乱码。

技术图片

 

应该是catalina的相关配置文件,网上查了好几篇博客都说修改这个文件,于是乎按照教程走,加上了-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8

if [ -z "$LOGGING_MANAGER" ]; then
  LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
fi

 

依旧乱码,这里修改的是logging_manager的值,那这一行代码是什么意思呢?跳到catalina.sh文件的最上方,tomcat不愧是顶级开源项目,人家这注释写的可真是太香了。

#   LOGGING_MANAGER (Optional) Override Tomcats logging manager
#                   Example (all one line)
#                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

 

意思是覆盖tomcat的日志管理器记录,也就是说我们修改了日志管理器这里的编码,但问题并未解决,这时我注意到这行注释上方还有一段注释。

#   LOGGING_CONFIG  (Optional) Override Tomcats logging config file
#                   Example (all one line)
#                   LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"

 

意思是覆盖tomcat的日志配置文件,难道这里覆盖掉了?跳到文件下方代码。

# Set juli LogManager config file if it is present and an override has not been issued
if [ -z "$LOGGING_CONFIG" ]; then
  if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
  else
    # Bugzilla 45585
    LOGGING_CONFIG="-Dnop"
  fi
fi

 

我们可以看到tomcat catalina log日志配置配置文件就是我们刚才修改过的logging.properties文件,仔细看了一下文件中的内容后,原来tomcat catalina log日志配置的代码就是下面这几行。

############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

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.maxDays = 90
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = $catalina.base/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90
2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = $catalina.base/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90
3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = $catalina.base/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90
4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8

 

试着将这几行代码中的UTF-8全部改为GBK后,问题圆满解决。

 

以上是关于IDEA运行Tomcat,控制台日志乱码的主要内容,如果未能解决你的问题,请参考以下文章

解决IntelliJ IDEA控制台乱码问题[包含程序运行时的log4j日志以及tomcat日志乱码]

IDEA中配置了Tomcat后,程序运行时控制台中的日志出现乱码

在idea中启动Tomcat时控制台日志乱码问题

Servlet学习之Tomcat控制台中文乱码问题

IDEA控制台输出中文乱码问题

idea tomcat中午日志乱码