1. Logback 提供了三个模块Core、classic、access. 其中Core是基础,其他两个包依赖于这个包。
logback-classic是SLF4J原生的实现。所以你可以用其他logging System去替换它。当然logback-classic依赖于slf4j-api
logback-access与servlet容器集成。提供http-access的log功能。
2. Logback 内建三个主要的类: Logger,Appender和Layout. Logger是logback-classic模块的一部分,而Appender和Layout接口是logback-core的一部分
3. Logger接口
package org.slf4j;
public interface Logger{
public void trace(String message);
public void debug(String message);
public void info(String message);
public void warn(String message);
public void error(String message);
}
4. Logger Level
TRACE < DEBUG < INFO < WARN < ERROR
5. Logback通过logback.xml进行配置。
加载机制:
1. Logback首先会在classpath中查找logback-test.xml
2. Logback会在classpath中查找logback.xml
3. 如果既没有找到logback-test.xml,也没有找到logback.xml,则自动使用BasicConfigurator作为logger配置文件,输出到控制台。
BasicConfigurator使用默认的PatternLayout是: %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
6. 简单的logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</layout>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
-configuration属性:
1. debug(true/false)
2. scan(true/false)
3. scanPeriod(30 seconds)--加入没有时间单位。默认为毫秒
7. 保存logback信息到Db
Table Name:logging_event
---------------------------------
Field Name Type
---------------------------------
timestmp big int
formatted_message text
logger_name varchar
level_string varchar
reference_flag smallint
caller_filename varchar
caller_class varchar
caller_method varchar
caller_line varchar
event_id int
----------------------------------
----------------------------------
Table Name: logging_event_property
----------------------------------
File Name Type
----------------------------------
event_id int
mapped_key varchar
mapped_value text
-----------------------------------
-----------------------------------
Table Name: logging_event_exception
-----------------------------------
File Name Type
-----------------------------------
event_id int
i smallint
trace_line varchar
8. logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<timestamp key="byDay" datePattern="yyyyMMdd"/>
<!-- Output to Console -->
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %level [%thread] %10logger [%file:%line] %msg%n</pattern>
</layout>
</appender>
<!-- Output to File -->
<appender name="FileHtml" class="ch.qos.logback.core.FileAppender">
<file>log/MyApp-${byDay}.log.html</file>
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%date%level%thread%10logger%file%line%msg</pattern>
</layout>
</appender>
<!-- Output by Email -->
<!--
<appender name="Email" class="ch.qos.logback.classic.net.SMTPAppender">
<SMTPHost>stmp host name</SMTPHost>
<To>Email Address</To>
<To>Email Address</To>
<From>Email Address</From>
<Subject>TESTING Email Function: %logger{20} - %m</Subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%date%level%thread%10logger%file%line%msg</pattern>
</layout>
</appender>
-->
<!-- Output to Database -->
<!--
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://localhost:3306/test</url>
<user>root</user>
<password>trend_dev</password>
</connectionSource>
</appender>
-->
<root level="TRACE">
<appender-ref ref="Console"/>
<appender-ref ref="FileHtml"/>
<!--
<appender-ref ref="Email"/>
<appender-ref ref="DB"/> -->
</root>
</configuration>