springboot2.x简单详细教程--整合Logback日志框架(第十一章)

一、新日志框架LogBack介绍


    简介:日志介绍和新日志框架Logback讲解

    1.常用处理java的日志组件 slf4j,log4j,logback,common-logging 等
    
    2、logback介绍:基于Log4j基础上大量改良,不能单独使用,推荐配合日志框架SLF4J来使用
        logback当前分成三个模块:logback-core,logback-classic和logback-access;
        logback-core是其它两个模块的基础模块

  注意日志框架影响QPS比较大,选择前应该进行测试,慎重选择。

 3、Logback的核心对象:
        Logger:日志记录器
        Appender:指定日志输出的目的地,目的地可以是控制台,文件(springboot默认输出到控制台
        Layout:日志布局 格式化日志信息的输出

        
    4、日志级别:DEBUG < INFO < WARN < ERROR

      一般使用INFO 和WARN即可

 ===========log4j示例===========        
         ### 设置###
        log4j.rootLogger = debug,stdout,D,E

        ### 输出信息到控制抬 ### 参考log4j文档写
        log4j.appender.stdout = org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.Target = System.out
        log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

        ### 输出DEBUG 级别以上的日志到=D://logs/error.log ###
        log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
        log4j.appender.D.File = D://logs/log.log
        log4j.appender.D.Append = true
        log4j.appender.D.Threshold = DEBUG 
        log4j.appender.D.layout = org.apache.log4j.PatternLayout
        log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

        ### 输出ERROR 级别以上的日志到=D://logs/error.log ###
        log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
        log4j.appender.E.File =E://logs/error.log 
        log4j.appender.E.Append = true
        log4j.appender.E.Threshold = ERROR 
        log4j.appender.E.layout = org.apache.log4j.PatternLayout
        log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n 

        ===========logback============
    
    4、Log4j日志转换为logback在线工具支持log4j.properties转换为logback.xml,不支持 log4j.xml转换为logback.xml
     https://logback.qos.ch/translator/

1)转化工具

2)将以上的log4j日志复制进来转成logback.xml

3)查看结果

二、SpringBoot2.x日志讲解和自定义Logback配置实战


    简介:讲解SpringBoot2.x整合Logback配置实战

        1、官网介绍:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-logging

1)官方资料

2)日志布局

3)DEBUG级日志输出可以用jar包启动

 

           各个组件案例:https://logback.qos.ch/manual/index.html
        
        2、分析SpringBoot启动日志
            1)默认情况下,Spring Boot将日志输出到控制台

        三、整合Logback实战


            1.在src/main/resources下创建 日志文件logback-spring.xml,官方推荐 -spring.xml结尾

                 logback-spring.xml里面的内容如下:

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

     <appender name="consoleApp" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </layout>
    </appender>

    <appender name="fileInfoApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        <!-- 滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>app_log/log/app.info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorApp" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n
            </pattern>
        </encoder>
        
        <!-- 设置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 路径 -->
            <fileNamePattern>app_log/log/app.err.%d.log</fileNamePattern>
            
            <!-- 控制保留的归档文件的最大数量,超出数量就删除旧文件,假设设置每个月滚动,
            且<maxHistory> 是1,则只保存最近1个月的文件,删除之前的旧文件 -->
             <MaxHistory>1</MaxHistory>
            
        </rollingPolicy>
    </appender>
   <root level="INFO">  
        <appender-ref ref="consoleApp"/>
        <appender-ref ref="fileInfoApp"/>
        <appender-ref ref="fileErrorApp"/>
    </root>
</configuration>

 logback-spring.xml文件分析

1)整体结构

2)单个布局

  各个组件案例:https://logback.qos.ch/manual/index.html 

a)

3)filleInfoApp

4)fileErrorApp

 2.cotroller

2)启动访问

3)查看控制台

注意:root放在logback-spring.xml的最后面,放前面会出问题

4)刷新工程出现如下图的log文件

5)

6)logback-spring.xml已经过滤掉Error级别的了

7)扩展:改为debug会怎么样呢? 将生成的log文件先删除

8)

9)

  总结:

1.开发中一般用Info级别,debug无用信息太多,占用磁盘

 2.  默认加载加载配置顺序 logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
            
 3. 注释:
                <configuration> 子节点
                <appender></appender>                       
                <logger></logger>
                <root></root>(要加在最后)        

猜你喜欢

转载自blog.csdn.net/jianchilu/article/details/83477103