最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決因缺少Log4j依賴導致應用啟動失敗的問題

 更新時間:2017年04月03日 12:00:37   作者:rhwayfunn  
日志是應用軟件中不可缺少的部分,Apache的開源項目log4j是一個功能強大的日志組件,提供方便的日志記錄。但這篇文章不是介紹Log4j,這篇文章主要介紹了關于因缺少Log4j依賴導致應用啟動失敗問題的相關資料,需要的朋友可以參考下。

前言

最近公司在做版本升級,所有對aaa(指代某個內部依賴)有依賴的應用需要排除掉。從這點看,幾乎不會有什么問題,因為僅僅是排除一些maven依賴而已嘛。但是,一位同學在排除依賴的時候,僅僅是把aaa排除了,而沒有在測試環(huán)境進行測試,在線上發(fā)布的時候,日志報dubbo服務注冊失?。⊕伄惓:蚫ubbo admin沒有看到注冊的服務),導致應用啟動失?。ɑ貪L后正常),影響正常業(yè)務5分鐘。

事后排查這個問題的時候發(fā)現,有兩個原因導致了應用啟動失敗:

  1. 去除aaa依賴后,導致應用有多個slf4j的依賴
  2. 去除aaa依賴后,導致log4j依賴缺失(應用使用logback)

第一點很好解決,因為從error日志可以直接知道原因,修改pom依賴并把非logback實現的日志依賴排掉就好了。

但是,第二點折騰了一下午才最終確定是因為log4j依賴缺失導致的。

下面把排查過程記錄如下:

把應用回滾后正常,那么問題肯定出在回滾之后的提交上,經過和正常版本的代碼的diff,發(fā)現只有zkclient的版本不同。

異常版本的依賴是如下:

<dependency>
 <groupId>com.github.sgroschupf</groupId>
 <artifactId>zkclient</artifactId>
 <version>0.1</version>
</dependency>

正常的依賴是:

<dependency>
 <groupId>com.101tec</groupId>
 <artifactId>zkclient</artifactId>
 <version>0.10</version>
</dependency>

分析到這里,已經有了解決思路,一種是直接修改zkclient的依賴,一種是繼續(xù)分析為什么兩種版本的不同會導致應用啟動失敗。通過繼續(xù)分析,發(fā)現groupId為com.101tec的日志框架使用的是Slf4j,而groupId為com.github.sgroschupf的日志框架是Log4j,而那位同事在排除aaa依賴的時候順便把log4j的依賴也排掉了,所以才導致應用啟動失敗。

com.github.sgroschupf的log框架:

com.101tec的log框架:

再回到剛開始dubbo注冊服務失敗的問題,一切都明了了——因為把log4j依賴排掉了,導致dubbo使用zkclient注冊服務的時候因為無法初始化Log4j,導致無法初始化ZkClient,進而導致dubbo注冊失敗。

通過這個事件,獲得如下教訓:

  1. 盡量在一個系統內使用同一個日志框架
  2. 如果是依賴jar有不同的日志實現,使用更高版本的依賴
  3. 發(fā)布之前一定要記得在測試環(huán)境進行測試

總結

以上就是關于因缺少Log4j依賴導致應用啟動失敗的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • Java中的Native關鍵字講解

    Java中的Native關鍵字講解

    本文介紹了Java中的Native關鍵字,native關鍵字是架起本機語言和JAVA之間鴻溝的橋梁。如果我們的軟件與硬件的交互在使用預先存在的代碼時更有效,那么這可以作為一個關鍵環(huán)節(jié)。與從頭開始設計新的應用程序代碼相比,只要可以避免,它就可以使實現工作更少,下面來了解集體內容
    2021-12-12
  • Java學習筆記之觀察者模式

    Java學習筆記之觀察者模式

    這篇文章主要為大家詳細介紹了Java學習筆記之觀察者模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • mybatis-plus id主鍵生成的坑

    mybatis-plus id主鍵生成的坑

    這篇文章主要介紹了mybatis-plus id主鍵生成的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Springboot如何切換默認的Tomcat容器

    Springboot如何切換默認的Tomcat容器

    這篇文章主要介紹了Springboot如何切換默認的Tomcat容器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • MyBatis如何使用(一)

    MyBatis如何使用(一)

    這篇文章主要介紹了MyBatis如何使用(一)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 詳解如何保證Java本地緩存的一致性

    詳解如何保證Java本地緩存的一致性

    所謂的一致性是指在同時使用緩存和數據庫的場景下,要確保數據在緩存與數據庫中的更新操作保持同步,那么,怎么保證Java本地緩存的一致性?所以本文將給大家介紹了如何保證Java本地緩存的一致性,需要的朋友可以參考下
    2024-01-01
  • idea中使用git合并分支實踐

    idea中使用git合并分支實踐

    這篇文章主要介紹了idea中使用git合并分支實踐,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Windows編寫jar啟動腳本和關閉腳本的操作方法

    Windows編寫jar啟動腳本和關閉腳本的操作方法

    腳本文件,通常放入/bin目錄下,編寫啟動腳本需要保證能夠識別到對應的jar文件,其次需要保證能夠識別到/config中的配置文件信息,這篇文章主要介紹了Windows編寫jar啟動腳本和關閉腳本的操作方法,需要的朋友可以參考下
    2022-12-12
  • Java下載項目中靜態(tài)文件方式

    Java下載項目中靜態(tài)文件方式

    這篇文章主要介紹了Java下載項目中靜態(tài)文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • eclipse 中的javac命令與java命令

    eclipse 中的javac命令與java命令

    這篇文章主要介紹了eclipse javac命令與java命令的相關資料,需要的朋友可以參考下
    2016-12-12

最新評論

福建省| 隆尧县| 千阳县| 新巴尔虎右旗| 夏邑县| 和林格尔县| 原阳县| 七台河市| 呼图壁县| 黄冈市| 乐平市| 富宁县| 崇明县| 吉安市| 仲巴县| 新郑市| 柳林县| 永修县| 株洲县| 大埔县| 永登县| 富顺县| 深水埗区| 明溪县| 依安县| 武夷山市| 宿州市| 岳阳市| 响水县| 泗水县| 永仁县| 旬阳县| 平远县| 连云港市| 静安区| 和静县| 仙游县| 甘德县| 郴州市| 高邑县| 固镇县|