log4j日志只打印到控制台,沒有輸出到日志文件的問題


原因:SLF4J只能綁定一個唯一的日志框架,這里提示綁定了兩個,並且列出了位置,只要排除掉一個即可。

項目啟動時控制台報錯警告信息:

08-Jan-2020 15:01:07.141 警告 [RMI TCP Connection(7)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [amcc-ivr] appears to have started a thread named [commons-pool-EvictionTimer] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: java.lang.Object.wait(Native Method) java.util.TimerThread.mainLoop(Timer.java:552) java.util.TimerThread.run(Timer.java:505) 08-Jan-2020 15:01:11.262 信息 [RMI TCP Connection(7)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一個JAR被掃描用於TLD但尚未包含TLD。 為此記錄器啟用調試日志記錄,以獲取已掃描但未在其中找到TLD的完整JAR列表。 在掃描期間跳過不需要的JAR可以縮短啟動時間和JSP編譯時間。 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/MXF/IDEA/amcc/amcc-ivr/target/amcc-ivr/WEB-INF/lib/logback-classic-1.1.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/MXF/IDEA/amcc/amcc-ivr/target/amcc-ivr/WEB-INF/lib/slf4j-log4j12-1.7.12.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 [ch.qos.logback.classic.util.ContextSelectorStaticBinder]

查看jar包依賴列表,可以看到項目本身依賴的jar沒有沖突。但是有可能只是你本身的項目沒引用,像我引用了公共的jar,說不定里面就包含了log4j導致了沖突,我的就是這樣。可以發現amcc-utils引用了logback-classic。但我本身的項目是使用slf4j-api的。於是產生了沖突。

解決辦法是屏蔽掉這個引用:

 

 


<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
</exclusions>

之后Maven重新clean打包下,重啟項目,日志文件就正常輸出了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM