springboot啟動後卡住無日誌的幾種情況小結

2022-09-24 09:27:10 字數 3489 閱讀 6239

目錄

今天分享一下springboot啟動後無日誌的問題。

springboot專案啟動後卡住無日誌,肯定是報錯了或者其他原因,並且日誌沒有列印出來。

檢查一下 是否 exclude了springboot自帶的日誌包,放開後可能就有具體的程式設計客棧錯誤原因了。

org.springframework.boot

spring-boot-starter

2.0.5.release

org.springframework.boot

spring-boot-starter-loggiwww.cppcns.comng

載入到如下圖的地方,直接停了。

或者直接列印

info [class:org.apache.juli.logging.directjdklog | method:log | line:180] loginfo==> stopping service [tomcat]

沒有列印具體的報錯資訊

是具體報錯的地方用的日誌框架和你本身專案中的衝突了。

1.2.1 apollo忘記配置

比如就拿我們專案來說,apollo少配了乙個key,專案直接啟動失敗,只是報了上面的錯誤資訊,沒有報出具體報錯資訊。

apollo載入的時候用的日誌框架或者版本不一致導致的,一般來說log4j,slf4j,logback這些都會引用,但是版本很難統一,尤其引用了其他的第三方包。

在apollo那個問題上,將commons-logging的衝突解決後保留 1.1.1 版本,就列印出報錯資訊了。

commons-logging

commons-logging

1.1.1

1.2.2 tomcat版本衝突

去除第三方引用的不同版本的tomcat依賴,僅保留乙個

spring-boot-starter-tomcat

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

程式設計客棧sion>

1.2.3 apollo引用的包找不到

找不到 gson 包,這個和上面那個類似,也是apollo載入的時候失敗了,後來日誌列印出來了,問題也比較好找,加上gson依賴。

1.2.4 專案改成打包lib目錄後,部分包打包不完整

這個問題是最棘手了,找了一天,之前由於專案打jar包過大,想把jar和第三方不常用的包分開,打成jar和lib,具體可以看這篇。

同樣的pom依賴,在改成lib之後就啟動停止

info [class:org.apache.juli.logging.directjdklog | method:log | line:180] loginfo==> stopping service [tomcat]

只能把原來的100多m的jar解壓縮後和新方式打的lib目錄做對比,最後發現第三方包在迴圈依賴後打包有問題,大小也不一樣。lib目錄只打了自己那層,沒有打迴圈依賴那些包,導致載入的時候報錯了。

2.1 springboot 本身日誌被排除了,tomcat版本不一致

2.2 apollo找不到key 由於 commons-logging 版本過高

2.3 找不到gson包

2.4 打包lib目錄後,迴圈依賴的包和單次依賴打包大小不一致,導致部分類缺失

如果專案是個新專案,搭建工程的時候盡量保證使用的第三方包的相容性。如果是老的專案,加新包的時候要注意,盡量避免衝突,以之前的包為準。

本文標題: springboot啟動後卡住無日誌的幾種情況小結

本文位址:

springboot啟動後執行某些命令

多個類實現介面可以使用 order註解來定義執行順序 專案啟動完成了,因此可以注入spring管理的類 例項 component order 1 autowired private stringredistemplate stringredistemplate override stringredi...

spring boot, 容器啟動後執行某操作

常有在spring容器啟動後執行某些操作的需求,現做了乙個demo的實現,做一下記錄,也希望可以給需要的同學提供參考。1.spring啟動後,以新執行緒執行後續需要的操作,所以執行類實現runnable介面 component public class stepexecutor implements...

Spring boot 啟動後執行特定的操作

有時候我們需要在應用啟動完成後執行一些特定的操作,比如 刪除一些臨時檔案或者redis中的快取 將一些字典類的資料載入到快取,這樣就不用每次去資料庫中查了,有些關聯資料從快取中取得賦值就可以了,不再需要聯接查詢 啟動乙個計時器 看如下例項 taskrunner類 private static fin...