Logback中文文檔(一):介紹


什么是 logback

Logback 為取代 log4j 而生。
Logback 由 log4j 的創立者 Ceki Gülcü 設計。以十多年設計工業級記錄系統的經驗為基礎,所創建的 logback 比現有任何記錄系統更快、占用資源更少,有時差距非常大。
Logback 提供獨特而實用的特性,比如 Marker、參數化記錄語句、條件化堆棧跟蹤和強大的事件過濾功能。以上列出的僅僅是 logbook 實用特性的一小部分。
對於自身的錯誤報告,logback 依賴狀態(Status)對象,狀態對象極大地簡化了故障查找。你也許想在上下文中使用狀態對象而不是記錄。
Logback-core 附帶了 Joran,Joran 是個強大的、通用的配置系統,你可以在自己的項目里使用 Joran 以獲得巨大的作用。

第一步

必要條件

Logback-classic 依賴 slf4j-api.jar 和 logback-core.jar。
現在讓我們開始體驗 logback。
示例 1.1:記錄基本模版
(logback-examples/src/main/java/chapters/introduction/HelloWorld1.java)

package chapters.introduction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld1 {
	public static void main(String[] args) {
		Logger logger = LoggerFactory
			.getLogger("chapters.introduction.HelloWorld1");
		logger.debug("Hello world.");
	}
}

HelloWorld1 類導入了 SLF4J API 定義的 Logger 類和 LoggerFactory 類,更明確地說是定義在 org.slf4j 包里的兩個類。
main()方法的第一行里,調用 LoggerFactory 類的靜態方法 getLogger 取得一個 Logger實例,將該實例賦值給變量logger。這個 logger被命名為“chapters.introduction.HelloWorld1”。
main 方法繼續調用這個 logger 的 debug 方法並傳遞參數“Hello world”。我們稱之為 main方法包含了一條消息是“Hello world”、級別是 DEBUG 的記錄語句。
注意上面的例子並沒有引用任何 logback 的類。多數情況下,只要涉及到記錄,你只需要引用 SLF4J 的類。因此在絕大多數情況下,你的類只導入 SLF4J 的 API,基本可以忽略logback 的存在。
運行示例程序:
java chapters.introduction.HelloWorld1
運行后會在控制台輸出下面的一行文字。得益於 logback 提供了默認配置策略,當沒有發現默認配置文件時,logback 會為根(root) logger 添加一個 ConsoleAppender。
20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
Logback 可以通過內置的狀態系統來報告其內部狀態。通過 StatusManager 組件可以訪問 logback 生命期內發生的重要事件。目前,我們調用 StatusPrinter 類的 print()方法來打印logback 的內部狀態。

示例 1.2:打印 Logger 狀態
(logback-examples/src/main/java/chapters/introduction/HelloWorld2.java)

package chapters.introduction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
public class HelloWorld2 {
	public static void main(String[] args) {
		Logger logger = LoggerFactory
			.getLogger("chapters.introduction.HelloWorld2");
		logger.debug("Hello world.");
		// print internal state
		LoggerContext lc = (LoggerContext)
		LoggerFactory.getILoggerFactory();
		StatusPrinter.print(lc);
	}
}

運行后輸出如下:

	12:49:22.203 [main] DEBUG chapters.introduction.HelloWorld2 - Hello world.
	12:49:22,078 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find
	resource [logback-test.xml]
	12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find
	resource [logback.xml]
	12:49:22,093 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default
	configuration.

Logback 說它沒有找到配置文件 logback-test.xml 和 logback.xml(稍后解釋),於是用默認策略進行配置,即用一個基本的 ConsoleAppender。Appender 類可被視為輸出目的地的。
Appender 包含許多不同類型的目的地,包括控制台、文件、Syslog、TCP 套接字、JMS 和其他。用戶可以很容易地自定義 Appender。
當發生錯誤時,logback 將自動在控制台上打印其內部狀態。
之前的兩個示例相當簡單,大型程序里真實記錄志情況也不會有太大區別。記錄系統的基本模式不會改變,可能改變的是配置過程。也許你想按照自己的需要來定制或配置 logback,之后的章節會討論配置 logback。
在上面的例子里,我們調用 StatusPrinter.pring()方法來打印 logback 的內部狀態。在診斷與 logback 相關的問題時,logback 的內部狀態信息會非常有用。
在應程序里啟用記錄的三個必需步驟如下:

  1. 配置 logback 環境。方法有繁有簡,稍后討論。
  2. 在每個需要執行記錄的類里,調用 org.slf4j.LoggerFactory 類的 getLogger()方法獲取一個 Logger 實例,以當前類名或類本身作為參數。
  3. 調用取得的 logger 實例的打印方法,即 debug()、info()、warn()和 error(),把記錄輸出到配置里的各 appender。

構建 logback

Logback 使用 Maven2 進行構建。
安裝 Maven2 后,解壓 logback 發行包,在解壓后的目錄下執行 mvn package 命令,就可以構建整個 logback 項目,包括各個模塊。Maven 會自動下載所需外部類庫。
Logback 發行包包含完整的源代碼,你可以修改源代碼,創建自己的版本。你還可以發布修改過的版本,前提是遵守 LGPL 或 EPL。

Logback 在以下 JDK 進行過構建和測試。

JDK Operating System
Sun JDK 1.5.0.06 Windows XP
Sun JDK 1.5.0.08 Linux 64bit AMD
WebLogic JRockit 1.5.0.14 Linux 64bit AMD
IBM JDK 1.6.0.1 Linux 64bit AMD
Sun JDK 1.6.0.16 (64 bit) Windows 7 (64 bit)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM