1. 程式人生 > 程式設計 >解決IDEA整合Docker外掛後出現日誌亂碼的問題

解決IDEA整合Docker外掛後出現日誌亂碼的問題

修改IDEA的vmoptions檔案

找到IDEA安裝目錄的bin目錄,在idea.exe.vmoptions和idea64.exe.vmoptions檔案中追加以下內容:

-Dfile.encoding=utf-8

完成以上操作後,重啟IDEA即可。

2019-12-20更新

在新版本的IDEA中,可能還需要在選單欄Help -> Edit Custom VM Options中追加以上內容,IDEA會首先以該檔案為準。

補充知識:springboot 原始碼閱讀之 logback-spring.xml 是在哪裡載入的?

解決IDEA整合Docker外掛後出現日誌亂碼的問題

強制在 logback-spring.xml 中人為製造一個錯誤,然後啟動 springboot 工程,得到如下錯誤呼叫棧資訊:

解決IDEA整合Docker外掛後出現日誌亂碼的問題

進入 LogbackLoggingSystem.java 第 169行所在的方法 loadConfiguration打斷點,debug 進入此方法,發現此時傳入的引數 location 已經是 classpath:logback-spring.xml,所以接下來在 AbstractLoggingSystem.initializeWithConventions 方法中打斷點,debug進入:

解決IDEA整合Docker外掛後出現日誌亂碼的問題

發現config 是在呼叫 getSpringInitializationConfig 之後被賦值為 classpath:logback-spring.xml 的,所以進入 getSpringInitializationConfig:

解決IDEA整合Docker外掛後出現日誌亂碼的問題

進入 getSpringConfigLocations:

解決IDEA整合Docker外掛後出現日誌亂碼的問題

getStandardConfigLocations 的方法體為:

解決IDEA整合Docker外掛後出現日誌亂碼的問題

返回一個寫死了幾個檔名的陣列

locations[i] = locations[i].substring(0,locations[i].length() - extension.length() - 1) + "-spring." + extension

這句程式碼的意思是 將上面陣列中的每個檔名去掉 "點",去掉 字尾之後的檔名 和 -spring 和 .字尾 拼接一塊兒,

如將 logback.xml 變成 logback-spring.xml

以上這篇解決IDEA整合Docker外掛後出現日誌亂碼的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。