1.Logback简介
Logback是由log4j创始人设计的又一个开源日志框架组件。 Logback当前分成三个模块:logback-core,logback-classic和logback-access。
logback-core是其他两个模块的基础模块。
logback-classic是log4j的一个改良技术,此外 logback-classic完整实现SLF4J API。使你可以很方便地更换成其它日志系统如log4j或JDK14Logging,logback-classic包含logback-core模块。
logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
2.Logback中的组件
Logger:日志的记录器,主要用于存放日志对象,也可以定义日志类型、级别
Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
Layout:负责把事件转换成字符串,格式化的日志信息的输出。在Logback中Layout对象被封装在encoder中,也就是说我们未来使用的encoder其实就是Layout。
3.Logback配置文件
Logback提供了3种配置文件:
logback.groovy
logback-test.xml
logback.xml
如果都不存在则采用默认的配置
4.日志输出格式
日志输出格式:
%-10level 级别 案例为设置10个字符,左对齐
%d(yyyy-MM-dd HH:mm:ss.SSS} 日期
%c 当前类全限定名
%M 当前执行日志的方法
%L 行号
%thread 线程名称
%m 或者%msg 信息
%n 换行
5.日志案例
5.1 日志级别
logback有5种级别的日志输出分别是trace < debug < warn < error ,通过信息打印,默认的日志级别是debug
5.2 案例
1)pom.xml 文件配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.form.example</groupId>
<artifactId>slf4j</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!--slf4j日志门面-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!--logback日志实现-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
2)logback.xml 文件配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--配置文件通用属性:配置文件中的通用属性相当于一个公共的变量,可以通过以${name}的形式,方便的取得value值-->
<property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L %thread %m%n"></property>
<!--配置文件的输出路径-->
<property name="logDir" value="/Users/chenzhenwei/Desktop/pro/target/classes"></property>
<!--配置文件的appender-->
<appender name="fileAppender" class="ch.qos.logback.core.FileAppender">
<!--引入文件的位置-->
<file>${logDir}/logback.log</file>
<!--设置输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
</appender>
<!--配置文件的appender 可拆分归档的文件-->
<appender name="roll" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--输入格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
<!--文件输出的位置-->
<file>${logDir}/roll_logback.log</file>
<!--拆分规则-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--按照时间和压缩格式声明文件名 压缩格式gz-->
<fileNamePattern>${logDir}/roll.%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>
<!--按照文件大小进行拆分-->
<maxFileSize>1KB</maxFileSize>
</rollingPolicy>
</appender>
<!--配置控制台appender-->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<!--表示对于日志输出目标的配置
默认:System.out 表示以黑色字体输出日志
设置:System.err 表示以红色字体输出日志
-->
<target>
System.err
</target>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式引用通用属性配置-->
<pattern>${pattern}</pattern>
</encoder>
</appender>
<appender name="consoleFilterAppender" class="ch.qos.logback.core.ConsoleAppender">
<target>
System.err
</target>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${pattern}</pattern>
</encoder>
<!--设置过滤器-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--设置日志的输出级别-->
<level>ERROR</level>
<!--高于level中设置的级别则打印日志-->
<onMatch>ACCEPT</onMatch>
<!--低于level中设置的级别则不打印日志-->
<onMisMatch>DENY</onMisMatch>
</filter>
</appender>
<!--日志记录器 配置root logger level:配置日志级别-->
<root level="ALL">
<!--引入appender -->
<!-- <appender-ref ref="consoleAppender"/>-->
<appender-ref ref="consoleFilterAppender"/>
<!-- <appender-ref ref="roll"/>-->
<!-- <appender-ref ref="fileAppender"/>-->
</root>
</configuration>
3)Java代码
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SLF4JTest {
@Test
public void test() {
Logger logger = LoggerFactory.getLogger(SLF4JTest.class);
logger.trace("trace信息");
logger.debug("debug信息");
logger.info("info信息");
logger.warn("warn信息");
logger.error("error信息");
}
}