概述
Logback建立於三個主要類之上:日志記錄器(Logger),輸出端(Appender)和日志格式化器(Layout)。這三種組件協同工作,使開發者可以按照消息類型和級別來記錄消息,還可以在程序運行期內控制消息的輸出格式和輸出目的地。
1.日志記錄器(Logger):控制要輸出哪些日志記錄語句,對日志信息進行級別限制。
2.輸出端(Appender):指定了日志將打印到控制台還是文件中。
3.日志格式化器(Layout):控制日志信息的顯示格式。
日志記錄器Logger
在logback中只有一個日志記錄器Logger,繼承自org.slf4j.Logger且是final的。
public final class Logger implements org.slf4j.Logger, LocationAwareLogger,
AppenderAttachable<ILoggingEvent>, Serializable {
}
輸出端Appender
Logback提供了非常豐富的輸出端Appender。

其中,常用的Appender有以下幾個:
ConsoleAppender:打印日志信息到控制台,相當於System.out或者System.err。
FileAppender:打印日志信息到文件中。
RollingFileAppender:根據RollingPolicy和TriggeringPolicy將日志打到相應的文件中。
RollingFileAppender有兩個與之互動的重要子組件。第一個是RollingPolicy,負責滾動。第二個是TriggeringPolicy,決定是否以及何時進行滾動。所以,RollingPolicy負責“什么”, TriggeringPolicy負責“何時”。 要想RollingFileAppender起作用,必須同時設置RollingPolicy和TriggeringPolicy。不過,如果RollingPolicy也實現了TriggeringPolicy接口,那么只需要設置RollingPolicy。
讓我們來看看這些策略都有哪些吧?

其中,TimeBasedRollingPolicy比較特殊,它同時繼承了RollingPolicy和TriggerPolicy。即配置它一個也可以的。
另外在Appender中還使用了一個組件Encoder。
Encoder負責兩件事,一是把事件轉換為字節數組,二是把字節數組寫入輸出流。其結構如下:

目前,PatternLayoutEncoder是唯一有用的encoder,它基本上是封裝了PatternLayout,讓PatternLayout負責大多數工作。因此,似乎encoder並沒有帶來多少好東西,反而只有不需要的復雜性。然而,我們希望當新的、強大的encoder到來時,這種印象會改變。
日志格式化器Layout
其結構如下所示:

使用方法
logback配置
Logback可以通過編程式配置,或用XML格式的配置文件進行配置。
Logback采取下面的步驟進行自我配置:
1. 嘗試在classpath下查找文件logback-test.xml;
2. 如果文件不存在,則查找文件logback.xml;
3. 如果兩個文件都不存在,logback用BasicConfigurator自動對自己進行配置,這會導致記錄輸出到控制台。
Logback嵌入代碼使用
引入需要的包:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
生產logger實例:
要打印的類的開始部分:
private final Logger logger = LoggerFactory.getLogger(getClass());
使用logger實例打印日志
打印形式:
if (logger.isDebugEnabled()) {
logger.debug("To modify role(name={}) to role(name={}).",
updated.getName(), role.getName());
}
