解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码

21 篇文章 3 订阅
9 篇文章 0 订阅

解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码

笔者的环境:

  • JDK 13.0.2

  • Maven 3.6.3

  • Tomcat 9.0.41(Servlet 4.0,JSP 2.3)

  • IntelliJ IDEA 2020.1.2 (Ultimate Edition)

  初次在 IntelliJ IDEA 基于 Tomcat 构建 Web 应用时,往往会有 Tomcat 日志中显示中文乱码的问题。如下所示:

"C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\catalina.bat" run
[202X-xx-xx xx:xx:xx,470] Artifact XXXXX:war exploded: Waiting for server connection to start artifact deployment...
Using CATALINA_BASE:   "C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_XXXXX_X"
Using CATALINA_HOME:   "C:\Program Files\Apache Software Foundation\Tomcat 9.0"
Using CATALINA_TMPDIR: "C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-13.0.2"
Using CLASSPATH:       "C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   ""
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
XX-XXX-202X xx:xx:xx.759 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.鏈嶅姟鍣ㄧ増鏈�: Apache Tomcat/9.0.41
XX-XXX-202X xx:xx:xx.760 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鏈嶅姟鍣ㄦ瀯寤�:        xxx x 202x xx:xx:xx UTC
XX-XXX-202X xx:xx:xx.761 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鏈嶅姟鍣ㄧ増鏈彿:      9.0.41.0
XX-XXX-202X xx:xx:xx.761 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鎿嶄綔绯荤粺鍚嶇О:      Windows 10
XX-XXX-202X xx:xx:xx.761 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.鐗堟湰:           10.0
XX-XXX-202X xx:xx:xx.761 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鏋舵瀯:              amd64
XX-XXX-202X xx:xx:xx.761 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 鐜鍙橀噺:     C:\Program Files\Java\jdk-13.0.2
XX-XXX-202X xx:xx:xx.762 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log Java铏氭嫙鏈虹増鏈�:    13.0.2+8
XX-XXX-202X xx:xx:xx.762 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.渚涘簲鍟�:        Oracle Corporation
XX-XXX-202X xx:xx:xx.762 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:     C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_2021骞�2鏈�25鏃XXX_X
XX-XXX-202X xx:xx:xx.762 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:     C:\Program Files\Apache Software Foundation\Tomcat 9.0
XX-XXX-202X xx:xx:xx.763 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       --add-opens=java.base/java.lang=ALL-UNNAMED
XX-XXX-202X xx:xx:xx.763 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       --add-opens=java.base/java.io=ALL-UNNAMED
XX-XXX-202X xx:xx:xx.763 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
XX-XXX-202X xx:xx:xx.763 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Djava.util.logging.config.file=C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_2021骞�2鏈�25鏃XXXX_X\conf\logging.properties
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcom.sun.management.jmxremote=
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcom.sun.management.jmxremote.port=1099
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcom.sun.management.jmxremote.ssl=false
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcom.sun.management.jmxremote.password.file=C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_2021骞�2鏈�25鏃XXXX_X\jmxremote.password
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcom.sun.management.jmxremote.access.file=C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_2021骞�2鏈�25鏃XXXX_X\jmxremote.access
XX-XXX-202X xx:xx:xx.764 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Djava.rmi.server.hostname=127.0.0.1
XX-XXX-202X xx:xx:xx.765 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Djdk.tls.ephemeralDHKeySize=2048
XX-XXX-202X xx:xx:xx.765 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
XX-XXX-202X xx:xx:xx.765 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dignore.endorsed.dirs=
XX-XXX-202X xx:xx:xx.765 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcatalina.base=C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_2021骞�2鏈�25鏃XXXX_X
XX-XXX-202X xx:xx:xx.765 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 9.0
XX-XXX-202X xx:xx:xx.765 淇℃伅 [main] org.apache.catalina.startup.VersionLoggerListener.log 鍛戒护琛屽弬鏁帮細       -Djava.io.tmpdir=C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp
XX-XXX-202X xx:xx:xx.775 淇℃伅 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 鍦╦ava.library.path:[C:\XXXX...XXXX]涓婃壘涓嶅埌鍩轰簬APR鐨凙pache Tomcat鏈満搴擄紝璇ュ簱鍏佽鍦ㄧ敓浜х幆澧冧腑鑾峰緱鏈�浣虫�ц兘
XX-XXX-202X xx:xx:xx.961 淇℃伅 [main] org.apache.coyote.AbstractProtocol.init 鍒濆鍖栧崗璁鐞嗗櫒 ["http-nio-8080"]
XX-XXX-202X xx:xx:xx.642 淇℃伅 [main] org.apache.catalina.startup.Catalina.load 鏈嶅姟鍣ㄥ湪[1052]姣鍐呭垵濮嬪寲
XX-XXX-202X xx:xx:xx.675 淇℃伅 [main] org.apache.catalina.core.StandardService.startInternal 姝e湪鍚姩鏈嶅姟[Catalina]
XX-XXX-202X xx:xx:xx.675 淇℃伅 [main] org.apache.catalina.core.StandardEngine.startInternal 姝e湪鍚姩 Servlet 寮曟搸锛歔Apache Tomcat/9.0.41]
XX-XXX-202X xx:xx:xx.683 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start 寮�濮嬪崗璁鐞嗗彞鏌刐"http-nio-8080"]
XX-XXX-202X xx:xx:xx.697 淇℃伅 [main] org.apache.catalina.startup.Catalina.start [55]姣鍚庢湇鍔″櫒鍚姩
Connected to server
[202X-xx-xx xx:xx:xx,067] Artifact XXXXX:war exploded: Artifact is being deployed, please wait...
XX-XXX-202X xx:xx:xx.710 淇℃伅 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 鑷冲皯鏈変竴涓狫AR琚壂鎻忕敤浜嶵LD浣嗗皻鏈寘鍚玊LD銆� 涓烘璁板綍鍣ㄥ惎鐢ㄨ皟璇曟棩蹇楄褰曪紝浠ヨ幏鍙栧凡鎵弿浣嗘湭鍦ㄥ叾涓壘鍒癟LD鐨勫畬鏁碕AR鍒楄〃銆� 鍦ㄦ壂鎻忔湡闂磋烦杩囦笉闇�瑕佺殑JAR鍙互缂╃煭鍚姩鏃堕棿鍜孞SP缂栬瘧鏃堕棿銆�
XX-XXX-202X xx:xx:xx.759 淇℃伅 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization started
#XXXX init.
XXXX
XX-XXX-202X xx:xx:xx.160 淇℃伅 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext initialized in 400 ms
XX-XXX-202X xx:xx:xx.923 璀﹀憡 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 浣跨敤[SHA1PRNG]鍒涘缓浼氳瘽ID鐢熸垚鐨凷ecureRandom瀹炰緥鑺辫垂浜哰761]姣銆�
XX-XXX-202X xx:xx:xx.937 淇℃伅 [RMI TCP Connection(3)-127.0.0.1] org.springframework.web.servlet.FrameworkServlet.initServletBean Initializing Servlet 'springmvc'
#XXX init.
XXXX@xxxxxxx
"C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\catalina.bat" stop
Using CATALINA_BASE:   "C:\Users\XXXXX\AppData\Local\JetBrains\IntelliJIdea2020.1\tomcat\Unnamed_XXXXX_4"
Using CATALINA_HOME:   "C:\Program Files\Apache Software Foundation\Tomcat 9.0"
Using CATALINA_TMPDIR: "C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-13.0.2"
Using CLASSPATH:       "C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation\Tomcat 9.0\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   ""
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
XX-XXX-202X xx:xx:xx.779 涓ラ噸 [main] org.apache.catalina.startup.Catalina.stopServer 鏈厤缃叧闂鍙c�傞�氳繃OS淇″彿鍏抽棴鏈嶅姟鍣ㄣ�傛湇鍔″櫒鏈叧闂��

  在以后的开发中将会明白,Tomcat 日志信息是开发中不可或缺的内容,因此修复此 Bug 必不可少。修复的方法如下。

方法 1

  1. 修改 IntelliJ IDEA 的用户配置文件 idea64.exe.vmoptions。按下图操作即可。实际上,这个文件位于 C:\Users\Windows用户名\AppData\Roaming\JetBrains\IntelliJIdea2020.1

在这里插入图片描述

  1. 在 IntelliJ IDEA 内部打开的文件 idea64.exe.vmoptions 中添加一行代码 -Dfile.encoding=UTF-8 即可。

在这里插入图片描述

  1. 重启 IntelliJ IDEA,将会看到 Tomcat 日志中显示了可读的中文。

【注意】

   有人试图通过修改 IntelliJ IDEA 安装路径(如 C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\bin)下的配置文件 idea.exe.vmoptionsidea64.exe.vmoptions 来达到与上述相同的目的。这两个文件是 IntelliJ IDEA 全局的配置文件,而上述 方法 1 中的用户配置文件 idea64.exe.vmoptions 将会覆盖这两个文件的效果,因此在这两个文件中添加代码 -Dfile.encoding=UTF-8 是不起作用的。


方法 2(不推荐)

  1. 修改 Tomcat 的日志配置文件 logging.properties。此文件位于目录 Tomcat 安装目录\conf 下,如 C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\logging.properties

  2. 找到并打开此文件 logging.properties,在该文件中将 java.util.logging.ConsoleHandler.encoding 值由 UTF-8 改为 GBK 即可。

在这里插入图片描述

  1. 重启 IntelliJ IDEA,将会看到 Tomcat 日志中显示了可读的中文。

【注意】

   此方法将影响 Tomcat 通信的数据编码,有可能会使 Web 应用中的通信内容乱码,不建议使用该方法。


  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值