logback配置文件不生效問題的解決和思考

logback配置文件不生效問題

今天在做測試環境部署的時候,因爲新版本上線需要做安全測試,所以需要應用生成一種特定的日誌文件,這個時候就需要配置logback配置文件,因爲應用的底層框架是使用已經封裝好的框架,對logback的配置也是有默認的配置文件,名稱是logback-spring.xml,此時修改好本地環境需要的日誌格式,運行之後能夠生成我們想要的日誌目錄和對應下的日誌文件。
此時將修改好的日誌配置文件上傳到測試環境,發現測試環境死活沒有我們想要的目標日誌輸出,但是其他的日誌就可以正常輸出,在測試環境搜尋許久,發現測試環境的web容器有一個logback.xml。而且對照了日誌格式,貌似正常輸出的日誌就是根據這個loback.xml輸出的。但是爲什麼我自己配置了logback的配置在classpath下,卻沒有采用我自己的,而是使用了另外這個配置文件。於是開始在找答案之旅,看看logback的一些東西,最後找到了。

logback 在啓動時,根據以下步驟尋找配置文件:
1⃣️在 classpath 中尋找 logback-test.xml文件
2⃣️如果找不到 logback-test.xml,則在 classpath 中尋找 logback.groovy 文件
3⃣️如果找不到 logback.groovy,則在 classpath 中尋找 logback.xml文件
4⃣️如果上述的文件都找不到,則 logback 會使用 JDK 的 SPI 機制查找 META-INF/services/ch.qos.logback.classic.spi.Configurator 中的 logback 配置實現類,這個實現類必須實現 Configuration 接口,使用它的實現來進行配置
5⃣️如果上述操作都不成功,logback 就會使用它自帶的 BasicConfigurator 來配置,並將日誌輸出到 console
(上述內容引用自:作者:beanlam 鏈接:https://www.jianshu.com/p/1ded57f6c4e3)

根據上面的描述,我們可以知道,logback就先找logback-test.xml,然後找logback.groovy,接下來找logback.xml。而我這邊配置的logback的名稱是logback-spring.xml,所以logback會先找到logback.xml,也就先加載了這個配置文件,導致我們的配置失效,至此,結束了一個小時的找bug之旅。

小結
其實這個問題也許有的朋友一眼就能解決,因爲同時存在兩個logback的配置文件這種情況,很少發生,之所以我自己沒有思考到重複性的問題的願意是,測試環境的web容器裏面還有很多冗餘的配置,但是這些配置都沒有對我的引用造成干擾,所以麻痹了我自己,從而沒有往這個方向上考慮,以後要注意這些問題。

很久沒有來了,有時候想寫,但是懶不願意動,後面有個想法就是把自己在測試或者生產過程中遇到的問題,定位問題的經過和思考都用簡單的文字寫下來,記錄一下自己踩過的坑,感覺還是很有意義的。向上吧少年。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章