LogBack 日誌等級設定無效,原因竟然是因為這個?!
最近被公司派去北京出差,本以為是個輕鬆的差事,北京一週遊~
但是沒想到第一天就是九點半下班, 大意了~
好了,回到正題,今天來講下最近除錯專案的時候發現的一個 Logback 日誌級別設定不生效的問題。
問題背景
事情是這樣的,我們的專案是一個 SpringBoot 的工程的,其中日誌框架使用的是 LogBack,配置檔案如下所示:
<configuration scan="true" scanPeriod=" 5 seconds" debug="true"> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern> </encoder> </appender> <logger name="org.springframework" level="DEBUG"/> <root level="debug"> <appender-ref ref="stdout"/> </root></configuration>
為了方便檢視專案執行的 SQL,這裡我把日誌的級別調整成
DEBUG
。
執行的專案,執行結果比較令人驚訝,日誌僅僅輸出了
INFO
日誌,並沒有輸出
DEBUG
日誌。
剛開始還以為 Logback 配置檔案寫的有問題,才導致這個問題。網上找了幾個例子,對比了一下,這類的配置檔案並沒有什麼問題。
於是進行一系列深度排查(令人頭禿),最終終於找到了問題的原因。
問題原因
由於 Logback 的配置
debug=true
,專案啟動的時候,將會列印出 Logback 內部日誌資訊,日誌如下:
從這個日誌可以看到,Logback Root 已經設定為
DEBUG
。
那為什麼專案啟動之後,DEBUG 就失效了?
不要急,接著往下看。
當 Spring 容器啟動之後,Spring 內部將會發出一些列的
ApplicationEvent
,然後這些將會被各類已經註冊的
ApplicationListener
監聽。
由於這個專案是一個 SpringBoot 的工程,裡面有一個
LoggingApplicationListener
將會監聽
ApplicationEnvironmentPreparedEvent
,程式碼如下:
這裡面的邏輯比較簡單,獲取系統配置的日誌級別,
levels
值如下:
可以看到這裡 root 對應的值為
info
,這裡將會繼續呼叫 Logback 的的方法設定日誌級別,日誌輸出如下:
上面這些日誌級別配置來自其實來自 SpringBoot 的配置檔案 application.properties
總結
最後,總結一下,SpringBoot 專案,如果使用單獨的 LogBack 配置檔案,SpringBoot 的配置檔案 application.properties 配置的 logging.level.root 將會覆蓋的 Logback 配置檔案中的 root 的配置:
<root level="debug"> <appender-ref ref="stdout"/></root>
問題看起來是那麼簡單,排查的過程真的是令人頭禿。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000181/viewspace-2774587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Logback日誌級別】動態調整Logback的日誌級別
- 設定Spark日誌級別Spark
- mysql因為事務日誌問題無法啟動MySql
- 《伊格效應》開發日誌:為什麼做職人這個題材?
- Logback中使用TurboFilter實現日誌級別等內容的動態修改Filter
- Java 日誌框架 LogbackJava框架
- logback下日誌輸出前處理操作——以日誌脫敏為例
- spark指令碼日誌輸出級別設定Spark指令碼
- logback 日誌輸出格式
- logback日誌元件使用案例元件
- 我是因為什麼原因走向程式設計師這個行業?--十年系列程式設計師行業
- seo新手優化網站效果不明顯,竟然是這個原因!看完這個就懂了優化網站
- 5個日誌級別
- 因為這些原因找不到工作,真的很虧!
- IIS設定預設主頁無效
- Spring Boot logback日誌配置Spring Boot
- Spring Boot 整合 Logback 日誌Spring Boot
- Java日誌框架:logback詳解Java框架
- Nginx日誌格式設定Nginx
- 為什麼設定css使用百分比設定元素高度無效CSS
- Logback配置檔案這麼寫,還愁不會整理日誌?
- springboot超級詳細的日誌配置(基於logback)Spring Boot
- 因為美女太多,這所學校設定了三個計算機類學院計算機
- 遠端升級頻頻失敗?原因竟然是…
- 日誌傳送事務日誌備份設定
- Scrapy的日誌等級和請求傳參
- 重做日誌大小的設定
- Postgresql日誌歸檔設定SQL
- 設定mybatis 是否列印日誌MyBatis
- SVN提交日誌模板設定
- 因為這個歸因模型,廣告轉化率提升7%模型
- 百億級日誌流分析實踐 | 剖析個推後效分析功能實現原理
- 你的Android不好用,都是因為這幾點原因Android
- 無效SSL證書有哪些原因
- UICollectionView SelectItem方法無效的原因UIView
- 【轉】java日誌 -logback的使用和logback.xml詳解JavaXML
- sourceTree這是一個無效的倉庫
- apache 訪問日誌如何設定每日新增一個日誌檔案、如何限制大小、設定記錄內容Apache