(一)logback模块和主要接口

来源:互联网 发布:淘宝店在哪找货源 编辑:程序博客网 时间:2024/05/17 04:21

一、logback模块

logback大致可分为3个模块:logback-core、logback-classic和logback-access。

logback-core:是其他两个模块的基础,包含了核心元件的接口和实现。
logback-classic:实现了slf4j api,所以你可以在logback和slf4j其他的实现之间切换。
logback-access:提供了在web容器中http-access日志功能的实现。

从上述内容我们可以看出,一般应用我们需要添加如下依赖:

<dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-api</artifactId>      <version>1.7.5</version></dependency><dependency>      <groupId>ch.qos.logback</groupId>      <artifactId>logback-core</artifactId>      <version>1.1.7</version></dependency><dependency>        <groupId>ch.qos.logback</groupId>        <artifactId>logback-classic</artifactId>        <version>1.1.7</version>  </dependency>

在logback中,我们需要理解的最重要的4个接口或类型就是Logger,Encoder,Layout和Appender。logback的Logger是一个实现类,放在classic包里,这个Logger类是slf4j的org.slf4j.Logger接口的一个实现,Layout和Appender两个接口在core包里。

二、主要类型和接口

下面主要介绍类型的职责,详细在后续章节说明:

ch.qos.logback.classic.Logger

这个Logger类是slf4j的org.slf4j.Logger接口的一个实现。他提供了我们在记录日志时候的入口。通过调用不同日志级别的同名方法,产生不同级别的日志事件。

下面是使用Logger时日志记录常用方法(每个级别还包含一系列重载方法,这里不做展示):

public void trace(String format);public void debug(String msg);public void info(String msg);public void warn(String msg);public void error(String msg);

ch.qos.logback.core.encoder.Encoder

Encoder负责将日志event转换为byte array,然后将byte array传输到OutputStream流中。

ch.qos.logback.core.Layout

Layout负责将日志event转换成string。

ch.qos.logback.core.Appender

官方文档的解释是:Logback delegates the task of writing a logging event to components called appenders。说实话我没看懂,XD。

其实理解Appender只需要理解他最重要的一个方法doAppend(E event)。这个方法也是logback框架最重要的一个方法。E具体是什么类型在不同模块里有所不同,classic里他是继承ILoggingEvent接口的一个类型实例,在access模块里,他是AccessEvent类型的实例。doAppend方法干的事儿就是接收一个日志事件,然后让他以正确的格式向外输出给对应的设备。这就是Appender主要干的事儿。
我们在配置Appender的时候,常会看到子节点有filter,encoder,xxpolicy这些东西,appender会协调这些组件一起工作。

原创粉丝点击