您好,登錄后才能下訂單哦!
怎么解決在開發(fā)環(huán)境下可以輸出日志在生產(chǎn)環(huán)境沒有日志輸出問題?相信很多新手小白對此束手無策,通過這篇文章的總結(jié),希望你能找到解決的方法。
一、問題說明:在開發(fā)環(huán)境和測試環(huán)境下均可以輸出日志,但在生產(chǎn)環(huán)境無日志輸出.
二、發(fā)現(xiàn)問題:
1,系統(tǒng)不同:
開發(fā)環(huán)境和測試環(huán)境(windows)
生產(chǎn)環(huán)境(linux)
2,提示信息:SLF4J: Class path contains multiple SLF4J bindings(類路徑包含多個SLF4J綁定)
a.找到綁定:
SLF4J: Found binding in [jar:file:/home/service/device/device-tomcat-agv/webapps/showcase/WEB-INF/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
b.找到綁定:
SLF4J: Found binding in [jar:file:/home/service/device/device-tomcat-agv/webapps/showcase/WEB-INF/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
c.完整日志:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/service/device/device-tomcat-agv/webapps/showcase/WEB-INF/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/service/device/device-tomcat-agv/webapps/showcase/WEB-INF/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.springframework.data.repository.config.RepositoryConfigurationDelegate).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
三、排查問題:
1,開發(fā)環(huán)境和測試環(huán)境(windows):
先加載的是 log4j-slf4j-impl , 后加載的是 slf4j-log4j12 .
2,生產(chǎn)環(huán)境:
先加載的是 slf4j-log4j12 , 后加載的是 log4j-slf4j-impl .
四、分析問題:
因?yàn)? slf4j 優(yōu)先綁定先加載的 jar包 .
所以: 開發(fā)環(huán)境綁定的是 log4j-slf4j-impl .
生產(chǎn)環(huán)境綁定的是 slf4j-log4j12 .
官方資料:slf4j 集成 log4j2 時需要的橋接包是 log4j-slf4j-impl 。
開發(fā)環(huán)境:slf4j 綁定是正確的,因此可以打印日志。
生產(chǎn)環(huán)境:slf4j 綁定的 jar 包是 slf4j-log4j12 。所以生產(chǎn)環(huán)境輸出不了日志 (產(chǎn)生這個問題的根本原因是lib里面有多個了slf4j可綁定的jar包)
五、解決方案:
由于是 slf4j 綁定 jar 包錯誤而導(dǎo)致打印不了日志。所以我們必須要把這個 slf4j-log4j12.jar 包排除干凈。
jar 包主要來源有:
1:zkclient
2:zookeeper
六、問題總結(jié):
1:使用 slf4j + log4j2 時使用的橋接包是 log4j-slf4j-impl
2:當(dāng)有多個 slf4j 的橋接包時,一定要排除不需要的包
3:項(xiàng)目啟動時控制臺輸出的信息很重要,耐心觀察啟動日志可以解決很多問題
看完這篇文章,你能夠獨(dú)立解決在開發(fā)環(huán)境下可以輸出日志在生產(chǎn)環(huán)境沒有日志輸出問題了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。