解決SpringBoot log4j日志沒生成的問題
SpringBoot log4j日志沒生成
從同事那接了一個(gè)腳手架,啟動(dòng)后發(fā)現(xiàn)日志文件沒生成。
都知道SpringBoot默認(rèn)帶的logback,如果要用log4j需要把logback的依賴去掉。
看了下工程的pom.xml文件,確實(shí)是有加去掉spring-boot-starter-logging的聲明。
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
那怎么就死活不生成日志呢。
倒騰了好幾次,無意中看到控制臺(tái)最上面的輸出:
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的依賴去掉。
<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啟動(dòng)失敗不輸出日志
spring boot啟動(dòng)失敗,沒有任何錯(cuò)誤日志輸出,只輸出了如下信息:

可能的原因:
1、日志配置文件沒有配好
解決:修改日志等級(jí),找到logback-boot.xml文件,找到<root level="INFO"> </root>,修改日志等級(jí),添加標(biāo)準(zhǔn)輸出
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
如果自己沒有寫日志配置,可能是被其他jar包中的log配置文件覆蓋了你本地的默認(rèn)的日志。
解決辦法:編寫自己的日志配置文件或者排除一下資源文件。
2、jar沖突
3、idea本地緩存導(dǎo)致的失敗
這個(gè)是我遇到的情況,莫名其妙,前一天晚上還好好的,第二天突然就啟動(dòng)不了,什么都不輸出,還是只顯示下面這圖

此時(shí)可以嘗試執(zhí)行mvn clean命令,清除target目錄下的之前打好的jar包或者是war包。
當(dāng)然,也可以嘗試這樣,然后重新build。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot整合RabbitMQ 中的 TTL實(shí)例代碼
TTL 是 RabbitMQ 中一個(gè)消息或者隊(duì)列的屬性,表明一條消息或者該隊(duì)列中的所有消息的最大存活時(shí)間,單位是毫秒,這篇文章主要介紹了springboot整合RabbitMQ 中的 TTL,需要的朋友可以參考下2022-09-09
java反射之Method的invoke方法實(shí)現(xiàn)教程詳解
這篇文章主要給大家介紹了關(guān)于java反射之Method的invoke方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
SpringMVC+MyBatis實(shí)現(xiàn)多數(shù)據(jù)源切換
在企業(yè)級(jí)應(yīng)用開發(fā)中,經(jīng)常需要處理來自不同數(shù)據(jù)庫的數(shù)據(jù),為了滿足這一需求,我們可以通過配置多個(gè)數(shù)據(jù)源來實(shí)現(xiàn)對(duì)不同數(shù)據(jù)庫的訪問,下面我們來看看具體實(shí)現(xiàn)吧2025-01-01
@EnableWebMvc介紹和使用詳細(xì)demo(最新推薦)
@EnableWebMvc是SpringMVC的一個(gè)注解,用于啟用SpringMVC框架的基本功能,它通常用于需要自定義SpringMVC配置或禁用SpringBoot自動(dòng)配置的場(chǎng)景,本文給大家介紹了@EnableWebMvc介紹和使用詳細(xì)demo,感興趣的朋友一起看看吧2025-01-01
javaweb中mysql數(shù)據(jù)庫連接步驟方法及其實(shí)例
這篇文章主要介紹了使用java web 連接MySQL數(shù)據(jù)庫的驅(qū)動(dòng)方法的相關(guān)知識(shí),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-04-04
Java實(shí)現(xiàn)將數(shù)字日期翻譯成英文單詞的工具類實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)將數(shù)字日期翻譯成英文單詞的工具類,結(jié)合完整實(shí)例形式分析了Java日期轉(zhuǎn)換與字符串操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09

