解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码
解決 IntelliJ IDEA 內置的 Tomcat 日志中顯示的中文亂碼
- 方法 1
- 方法 2(不推薦)
筆者的環境:
-
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
【注意】
?? 有人試圖通過修改 IntelliJ IDEA 安裝路徑(如 C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.2\bin)下的配置文件 idea.exe.vmoptions 和 idea64.exe.vmoptions 來達到與上述相同的目的。這兩個文件是 IntelliJ IDEA 全局的配置文件,而上述 方法 1 中的用戶配置文件 idea64.exe.vmoptions 將會覆蓋這兩個文件的效果,因此在這兩個文件中添加代碼 -Dfile.encoding=UTF-8 是不起作用的。
方法 2(不推薦)
修改 Tomcat 的日志配置文件 logging.properties。此文件位于目錄 Tomcat 安裝目錄\conf 下,如 C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf\logging.properties。
找到并打開此文件 logging.properties,在該文件中將 java.util.logging.ConsoleHandler.encoding 值由 UTF-8 改為 GBK 即可。
【注意】
?? 此方法將影響 Tomcat 通信的數據編碼,有可能會使 Web 應用中的通信內容亂碼,不建議使用該方法。
總結
以上是生活随笔為你收集整理的解决 IntelliJ IDEA 内置的 Tomcat 日志中显示的中文乱码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代理、委托、钩子与打桩
- 下一篇: 不使用 Maven 等构建工具,而使用原