Logback创建于三个主要类之上:日志记录器(Logger),输出端(Appender)和日志格式化器(Layout)。这三种组件协同工做,使开发者能够按照消息类型和级别来记录消息,还能够在程序运行期内控制消息的输出格式和输出目的地。编程
1.日志记录器(Logger):控制要输出哪些日志记录语句,对日志信息进行级别限制。
2.输出端(Appender):指定了日志将打印到控制台仍是文件中。数组
3.日志格式化器(Layout):控制日志信息的显示格式。spa
在logback中只有一个日志记录器Logger,继承自org.slf4j.Logger且是final的。debug
public final class Logger implements org.slf4j.Logger, LocationAwareLogger,日志
AppenderAttachable<ILoggingEvent>, Serializable {code
}xml
Logback提供了很是丰富的输出端Appender。blog
其中,经常使用的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到来时,这种印象会改变。
其结构以下所示:
Logback能够经过编程式配置,或用XML格式的配置文件进行配置。
Logback采起下面的步骤进行自我配置:
1. 尝试在classpath下查找文件logback-test.xml;
2. 若是文件不存在,则查找文件logback.xml;
3. 若是两个文件都不存在,logback用BasicConfigurator自动对本身进行配置,这会致使记录输出到控制台。
引入须要的包:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
要打印的类的开始部分:
private final Logger logger = LoggerFactory.getLogger(getClass());
打印形式:
if (logger.isDebugEnabled()) {
logger.debug("To modify role(name={}) to role(name={}).",
updated.getName(), role.getName());
}