Java日志框架--logback

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信息");
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值