SpringBoot log4j日志沒生成
從同事那接了一個腳手架,啟動后發現日志文件沒生成。
都知道SpringBoot默認帶的logback,如果要用log4j需要把logback的依賴去掉。
看了下工程的pom.xml文件,確實是有加去掉spring-boot-starter-logging的聲明。
1
2
3
4
5
6
|
< exclusions > < exclusion > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-logging</ artifactId > </ exclusion > </ exclusions > |
那怎么就死活不生成日志呢。
倒騰了好幾次,無意中看到控制臺最上面的輸出:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/Users/xxx/.m2/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/Users/xxx/.m2/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.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]
說的是SLF4J依賴沖突,然后最后用例logback的。摔,難怪log4j日志一直沒生成。谷歌了一下,找到了解決辦法。
修改pom.xml,加入以下代碼把logback的依賴去掉。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter</ artifactId > < exclusions > < exclusion > < artifactId >logback-classic</ artifactId > < groupId >ch.qos.logback</ groupId > </ exclusion > < exclusion > < artifactId >log4j-over-slf4j</ artifactId > < groupId >org.slf4j</ groupId > </ exclusion > </ exclusions > </ dependency > |
spring boot啟動失敗不輸出日志
spring boot啟動失敗,沒有任何錯誤日志輸出,只輸出了如下信息:
可能的原因:
1、日志配置文件沒有配好
解決:修改日志等級,找到logback-boot.xml文件,找到<root level="INFO"> </root>,修改日志等級,添加標準輸出
1
2
3
|
< root level = "INFO" > < appender-ref ref = "STDOUT" /> </ root > |
如果自己沒有寫日志配置,可能是被其他jar包中的log配置文件覆蓋了你本地的默認的日志。
解決辦法:編寫自己的日志配置文件或者排除一下資源文件。
2、jar沖突
3、idea本地緩存導致的失敗
這個是我遇到的情況,莫名其妙,前一天晚上還好好的,第二天突然就啟動不了,什么都不輸出,還是只顯示下面這圖
此時可以嘗試執行mvn clean命令,清除target目錄下的之前打好的jar包或者是war包。
當然,也可以嘗試這樣,然后重新build。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/libertine1993/article/details/80857483