強制在 logback-spring.xml 中人爲製造一個錯誤,然後啓動 springboot 工程,得到如下錯誤調用棧信息:
進入 LogbackLoggingSystem.java 第 169行所在的方法 loadConfiguration打斷點, debug 進入此方法,發現此時傳入的參數 location 已經是 classpath:logback-spring.xml, 所以接下來在 AbstractLoggingSystem.initializeWithConventions 方法中打斷點,debug進入:
發現config 是在調用 getSpringInitializationConfig 之後被賦值爲 classpath:logback-spring.xml 的,所以進入 getSpringInitializationConfig:
進入 getSpringConfigLocations:
getStandardConfigLocations 的方法體爲:
返回一個寫死了幾個文件名的數組
locations[i] = locations[i].substring(0, locations[i].length() - extension.length() - 1) + "-spring." + extension
這句代碼的意思是 將上面數組中的每個文件名去掉 "點",去掉 後綴之後的文件名 和 -spring 和 .後綴 拼接一塊兒,
如將 logback.xml 變成 logback-spring.xml