一、問題是怎么發(fā)現(xiàn)的
最近有個 Java 系統(tǒng)上線后不久就收到了磁盤使用率告警,磁盤使用率已經(jīng)超過了 90% 以上,并且磁盤使用率還在不停增長。
二、問題帶來的影響
由于服務器磁盤被打滿,導致了系統(tǒng)正常的業(yè)務日志無法繼續(xù)打印,嚴重影響了系統(tǒng)的可靠性。
三、排查問題的詳細過程
剛開始收到磁盤告警的時候,懷疑是日志級別問題,業(yè)務日志輸出過多導致磁盤打滿。但是查看我們自己的業(yè)務日志文件目錄,每個日志文件內容都不是很大。
于是通過堡壘機登陸問題服務器,查看磁盤使用率很高的目錄列表,發(fā)現(xiàn)根目錄有個很大的日志文件,日志文件名稱為 log4j.log。但是檢查應用日志配置后,日志輸出配置路徑并沒有配置這個日志路徑。而且我們用的是 logback 日志組件和配置文件,并沒有使用 log4j 來輸出日志。于是便打開這個未知來源的日志文件內容,記錄的日志內容確實是我們自己的 java 系統(tǒng)寫入的日志內容,且大部分都是 debug 級別日志內容。于是猜測在系統(tǒng)依賴的 jar 包內也有一個 log4j 的日志配置文件。于是便把部署包下載下來,然后通過文檔遍歷掃描所有 jar 包內的日志配置文件,結果在一個第三方 jar 包內找到一個 log4j.xml 配置文件,里邊配置的 root 日志級別為 debug,日志輸出目錄是系統(tǒng)根目錄,日志文件名也都可以對應的上。
四、如何解決問題
通過上述排查過程找到了第三方 jar 包內的 log4j 配置文件,于是便排查該 jar 包的來源,發(fā)現(xiàn)是被其他 jar 包傳遞依賴進來的,并不是我們真實需要的 jar 包,所以通過 maven 排除該問題 jar 包即可。
五、總結反思
1. 以后在引入第三方 jar 包的時候一定要檢查他的依賴范圍,看是否會與現(xiàn)有系統(tǒng)的 jar 包有沖突或者帶來其他的影響。
2. 對外提供第三方 jar 包的時候,不要把自己的調試代碼和日志配置測試文件也打入 jar 包內。
作者:京東零售 曹志飛文章來源:http://www.zghlxwxcb.cn/news/detail-647099.html
來源:京東云開發(fā)者社區(qū)文章來源地址http://www.zghlxwxcb.cn/news/detail-647099.html
到了這里,關于Log4j瘋狂寫日志問題排查的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!