Java中logback的學習

轉:https://blog.csdn.net/lijiafa/article/details/109465399

Logback常用配置介紹

LOGBack簡介

官方手冊:https://logback.qos.ch/manual/introduction.html

介紹

作者Ceki Gülcü在Java日誌領域世界知名。他創造了Log4J,這個最早的Java日誌框架即便在JRE內置日誌功能的競爭下仍然非常流行。隨後他又着手實現SLF4J 這個“簡單的日誌前端接口(Façade)”來替代Jakarta Commons-Logging 。LOGBack,一個“可靠、通用、快速而又靈活的Java日誌框架”。

Logger可以分配的級別:TRACE、DEBUG、INFO、WARN 和 ERROR

級別順序爲:TRACE < DEBUG < INFO < WARN < ERROR

logback的官方網站:http://logback.qos.ch

SLF4J的官方網站:http://www.slf4j.org

組成

logback當前分成三個模塊:logback-core,logback- classic和logback-access。

  • logback-core:其它兩個模塊的基礎模塊;
  • logback- classic:log4j的一個 改良版本,完整實現SLF4J API,可以很方便地更換成其它日誌系統如log4j或JDK14 Logging
  • logback-access:訪問模塊與Servlet容器集成提供通過Http來訪問日誌的功能

自定義日誌配置
不同的日誌系統對應的日誌文件命名方式

日誌系統 日誌文件命名方式
Logback logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2 log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging) logging.properties

注意:Spring Boot官方推薦優先使用帶有-spring的文件名作爲日誌配置(如使用logback-spring.xml,而不是logback.xml),命名爲logback-spring.xml的日誌配置文件,spring boot可以爲它添加一些spring boot特有的配置項。 默認的命名規則,並且放在 src/main/resources 下面即可。

自定義日誌文件名

application.yml或者application.properties中通過修改logging.config屬性指定自定義的名字
logging.config=classpath:logging-config.xml

使用

引入依賴

引入logback-classic會同時引入logback-core的包,相反不會

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
</dependency>

創建配置文件:src目錄下/resource目錄下

logback查找配置文件順序

a. logback首先會試着查找logback-test.xml文件;

b. 當沒有找到時,繼續試着查找logback.groovy文件;

c. 當沒有找到時,繼續試着查找logback.xml文件;

d. 如果仍然沒有找到,則使用默認配置(打印到控制檯)。

清除common-logging等其他日誌實現包

使用命令mvn dependency:tree查看依賴樹,如果有其他依賴中有common-logging、log4j或者slf4j的包,使用<exclusion>標籤去除

spring本身日誌就使用的commons-logging,僅僅去掉就會使其不能正常工作,還需要添加commons logging到slf4j的橋接器jcl-over-slf4j,在項目中添加如下依賴即可

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${jcl.over.slf4j.version}</version>
</dependency>

如果有直接使用log4j的組件,也要將log4j排除掉,同時添加log4j-over-slf4

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</dependency>

使用slf4j+logback的方案,只需要引入logback-classic即可,不再需要單獨引入slf4j、logback-core模塊,logback-classic依賴以上兩個模塊。

logback的優點(13點)

  • 更快的實現 Logback的內核重寫了,在一些關鍵執行路徑上性能提升10倍以上。而且logback不僅性能提升了,初始化內存加載也更小了。
  • 非常充分的測試 Logback經過了幾年,數不清小時的測試。Logback的測試完全不同級別的。
  • Logback-classic非常自然實現了SLF4j Logback-classic實現了 SLF4j。在使用SLF4j中,你都感覺不到logback-classic。而且因爲logback-classic非常自然地實現了SLF4J, 所以切換到log4j或者其他日誌框架非常容易,只需要提供成另一個jar包就OK,根本不需要去動那些通過SLF4JAPI實現的代碼。
  • 非常充分的文檔 官方網站有兩百多頁的文檔。
  • 自動重新加載配置文件 當配置文件修改了,Logback-classic能自動重新加載配置文件。掃描過程快且安全,它並不需要另外創建一個掃描線程。這個技術充分保證了應用程序能在JEE環境裏面跑得很歡。
  • Lilith Lilith是log事件的觀察者,和log4j的chainsaw類似。而lilith還能處理大數量的log數據 。
  • 謹慎的模式和非常友好的恢復 在謹慎模式下,多個FileAppender實例跑在多個JVM下,能夠安全地寫到同一個日誌文件。RollingFileAppender會有些限制。Logback的FileAppender和它的子類包括RollingFileAppender能夠非常友好地從I/O異常中恢復。
  • 配置文件可以處理不同的情況 開發人員經常需要判斷不同的Logback配置文件在不同的環境下(開發,測試,生產)。而這些配置文件僅僅只有一些很小的不同,可以通過,和來實現,這樣一個配置文件就可以適應多個環境。
  • Filters(過濾器) 有些時候,需要診斷一個問題,需要打出日誌。在log4j,只有降低日誌級別,不過這樣會打出大量的日誌,會影響應用性能。在Logback,你可以繼續保持那個日誌級別而除掉某種特殊情況,如alice這個用戶登錄,她的日誌將打在DEBUG級別而其他用戶可以繼續打在WARN級別。要實現這個功能只需加4行XML配置。可以參考MDCFIlter 。
  • SiftingAppender(一個非常多功能的Appender) 它可以用來分割日誌文件根據任何一個給定的運行參數。如,SiftingAppender能夠區別日誌事件跟進用戶的Session,然後每個用戶會有一個日誌文件。
  • 自動壓縮已經打出來的log RollingFileAppender在產生新文件的時候,會自動壓縮已經打出來的日誌文件。壓縮是個異步過程,所以甚至對於大的日誌文件,在壓縮過程中應用不會受任何影響。
  • 堆棧樹帶有包版本 Logback在打出堆棧樹日誌時,會帶上包的數據。
  • 自動去除舊的日誌文件 通過設置TimeBasedRollingPolicy或者SizeAndTimeBasedFNATP的maxHistory屬性,你可以控制已經產生日誌文件的最大數量。如果設置maxHistory 12,那那些log文件超過12個月的都會被自動移除。

根結點 configuration

————————————————
版權聲明:本文爲CSDN博主「爬樓梯的小怪」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lijiafa/article/details/109465399

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章