logback意在接任log4j,由log4j創始人設計。
hello world
需要slf4j-api.jar logback-core.jar logback-classic.jar
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.");
}
}
變量logger指向類LoggerFactory調用靜態方法getLogger返回的一個Logger實例。這個logger被命名爲"chapters.introduction.HelloWorld1"。main函數調用了logger的debug方法,以"Hello World" 爲參數。我們通常說, main函數包含了一條持有消息"Hello World" 的DEBUG級別的logging statement。
由於使用默認設置,所以logback添加ConsoleAppender至root logger,輸出如下。
20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
logback可以使用內置的status系統來報告其內部的state,logback生命週期中發生的重要事件,可以通過StatusManager組件訪問。
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,076 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
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-test.xml 和 logback.xml配置文件,logback將使用默認配置,即一個基礎的
ConsoleAppender。Appender是一個可以被看作輸出目的地的類,可以是console, files, Syslog, TCP Sockets, JMS 等,用戶還可以根據具體情況創建自己的Appenders。
注意,errors時,logback會自動將內部state打印在consle。
開啓日誌的3個必要步驟:
1,配置logback環境
2,在每個你要記錄日誌的類中,通過org.slf4j.LoggerFactory 的getLogger()取得一個Logger實例,將類名或類本身當作參數傳入。
3,使用logger實例的打印方法,即debug(), info(), warn() and error() ,這會將日誌記錄輸出至配置好的appenders中。