日积月累之Logback框架

Logback引入

Logback主要分为三个模块:

  • logback-core :其它两个模块的基础模块
  • logback-classic :它是log4j的一个改良版本,同时它完整实现了slf4j API
  • logback-access :访问模块与Servlet容器集成提供通过Http来访问日志的功能
maven添加依赖:
		<!--slf4j 日志门面-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.26</version>
        </dependency>
        <!--logback 日志实现-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
案例:
public class LogbackTest {

    public static final Logger LOGGER = LoggerFactory.getLogger(LogbackTest.class);
    // 快速入门
    @Test
    public void testQuick() throws Exception {
        
        for (int i = 0; i < 10000; i++) {
            // 日志输出
            LOGGER.error("error");
            LOGGER.warn("wring");
            LOGGER.info("info");
            LOGGER.debug("debug");// 默认级别
            LOGGER.trace("trace");
        }
    }
}

logback组件之间的关系:

  1. Logger:日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也
    可以定义日志类型、级别。
  2. Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
  3. Layout:负责把事件转换成字符串,格式化的日志信息的输出。在logback中Layout对象被封
    装在encoder中。

Appender: 设置日志信息的去向,常用的有以下几个
ch.qos.logback.core.ConsoleAppender (控制台)

ch.qos.logback.core.rolling.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新文件)

ch.qos.logback.core.FileAppender (文件)

自定义logger对象:

用来设置某一个包或者具体的某一个类的日志打印级别、以及指定。
仅有一个name属性,一个可选的level和一个可选的addtivity属性
name:
用来指定受此logger约束的某一个包或者具体的某一个类。
level:
用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和OFF, 如果未设置此属性,那么当前logger将会继承上级的级别。
additivity:
是否向上级loger传递打印信息。默认是true。
可以包含零个或多个元素,标识这个appender将会添加到这个logger

提示:文件中的property设置的路径是相对于根路径

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <!--
            配置集中管理属性
            我们可以直接改属性的 value 值
            格式:${name}
        -->
    <property name="pattern" value="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n">
        <!--
    日志输出格式:
        %-5level
        %d{yyyy-MM-dd HH:mm:ss.SSS}日期
        %c类的完整名称
        %M为method
        %L为行号
        %thread线程名称
        %m或者%msg为信息
        %n换行
      -->
    </property>

    <!--定义日志文件保存路径属性-->
    <property name="log_dir" value="/logs"></property>

    <!--控制台日志输出的 appender-->
    <appender name="console" 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-->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <!--日志文件保存路径-->
        <file>${log_dir}/logback.log</file>
        <!--日志消息格式配置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
    </appender>

    <!--html 格式日志文件输出 appender-->
    <appender name="htmlFile" class="ch.qos.logback.core.FileAppender">
        <!--日志文件保存路径-->
        <file>${log_dir}/logback.html</file>
        <!--html 消息格式配置-->
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="ch.qos.logback.classic.html.HTMLLayout">
                <pattern>%-5level%d{yyyy-MM-dd HH:mm:ss.SSS}%c%M%L%thread%m</pattern>
            </layout>
        </encoder>
    </appender>

    <!--日志拆分和归档压缩的 appender 对象-->
    <appender name="rollFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志文件保存路径-->
        <file>${log_dir}/roll_logback.log</file>
        <!--html 消息格式配置-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${pattern}</pattern>
        </encoder>
        <!--指定拆分规则-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">

            <!--按照时间和压缩格式声明拆分的文件名-->
            <fileNamePattern>${log_dir}/rolling.%d{yyyy-MM-dd}.log%i.gz</fileNamePattern>

            <!--按照文件大小拆分-->
            <maxFileSize>1MB</maxFileSize>


        </rollingPolicy>
        <!--日志级别过滤器-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!--日志过滤规则-->
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--异步日志-->
    <appender name="async" class="ch.qos.logback.classic.AsyncAppender">
        <!--指定某个具体的 appender-->
        <appender-ref ref="rollFile"/>
    </appender>
    
  <!--
    也是<logger>元素,但是它是根logger。默认debug
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL
和 OFF,
    <root>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个
logger。
  -->
  
  
    <root level = "All">
        <appender-ref ref="console"/>
        <!--<appender-ref ref="file"/>-->
      <!--  <appender-ref ref="htmlFile" />-->
       <!-- <appender-ref ref="async"/>-->
    </root>
    <!--自定义 logger 对象
            additivity="false" 自定义 logger 对象是否继承 rootLogger
            如果additivity="true",Logger就会打印root标签中的日志,如果additivity="false",不会执行root标签中的日志
         -->
    <logger name="com.banbeitai" level="info" additivity="true">
        <appender-ref ref="console"/>
    </logger>
</configuration>
输出效果:
网页输出形式:

在这里插入图片描述

文件输出形式:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值