SpringBoot整合LogBack一看就懂

2021-04-24 22:28

阅读:296

标签:conf   size   dfs   文件路径   连接   opened   index   classpath   依赖   

SpringBoot环境为2.2.2.RELEASE。不用导入任何的依赖。yml文件不需要任何的配置。只用在

Classpath下创建一个logback.xml即可。如果需要自定义文件名或者文件位置,可以在yml中

配置 logging.config=classpath:logback.xml 

在代码中使用以下代码获取一个Logger对象,Class参数为当前类对象,方便再日志中打印。

private final static Logger logger = LoggerFactory.getLogger(FileLogDemo1.class);

logback的配置文件分为三部分。最外层是标签。

技术图片技术图片
xml version="1.0" encoding="UTF-8"?>

configuration> 


    
    property name="fixedFilePath" value="C:/Users/szwb295/Desktop/"/>

    
    timestamp key="currentTime" datePattern="yyyyMMddHHmmsss"/>


    
    property name="pattern" value="%d %p %X{request_uuid} [%t] [%c] - %m%n"/>
      
    appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        
        encoder>         
            pattern>${pattern}pattern>     
        encoder>
    appender>


     
    appender name="fixedFile" class="ch.qos.logback.core.FileAppender">   
        
        file>${fixedFilePath}a.logfile>     
        
        encoder>      
            pattern>${pattern}pattern>    
        encoder>
    appender>


    appender name="timeBased" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        file>C:\Users\szwb295\Desktop\currentLog2.logfile>    
        encoder>      
            pattern>${pattern}pattern>    
        encoder>

        
        rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            fileNamePattern>${fixedFilePath}history.%d{yyyyMMdd}.logfileNamePattern>
            maxHistory>3maxHistory>
        rollingPolicy>
    appender>

    logger name="com.dfsn.cloud.consumer.filelog2" level="INFO" additivity="false">
        appender-ref ref="timeBased"/>
    logger>


    appender name="sizeAndTimeBased" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        file>C:\Users\szwb295\Desktop\currentLog3.logfile>    
        encoder>      
            pattern>${pattern}pattern>    
        encoder>

        
        rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            fileNamePattern>${fixedFilePath}history.%d{yyyyMMdd}.%i.logfileNamePattern>
            maxHistory>1maxHistory>
            
            maxFileSize>50kbmaxFileSize>
            
            totalSizeCap>200kbtotalSizeCap>
        rollingPolicy>
    appender>

    logger name="com.dfsn.cloud.consumer.filelog3" level="INFO" additivity="false">
        appender-ref ref="sizeAndTimeBased"/>
    logger>


    appender name="fixedWindow" class="ch.qos.logback.core.rolling.RollingFileAppender">
        file>C:\Users\szwb295\Desktop\currentLog1.logfile> 
        encoder>      
            pattern>${pattern}pattern>    
        encoder>
        
        rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">          
            fileNamePattern>${fixedFilePath}history2.%d{yyyyMMdd}.%i.log.zipfileNamePattern>      
                
            minIndex>1minIndex>   
            
            maxIndex>3maxIndex>      
        rollingPolicy>
          
        triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">    
                 
            maxFileSize>100kbmaxFileSize>      
        triggeringPolicy>
    appender>


    
    logger name="com.dfsn.cloud.consumer.filelog1" level="ERROR" additivity="false">
        appender-ref ref="fixedWindow"/>
    logger>


    
    root level="DEBUG">      
        appender-ref ref="console"/>
        appender-ref ref="fixedFile"/>
    root>


configuration>
View Code

第一部分

标签有 name 和 value 两个属性。用于定义全局属性。可以在其他标签内使用 ${name} 

的方式引用value值。

标签的 key 和 datePattern 两个属性。用于定义全局日期字符串。datePattern规定字符串格式。

第二部分

标签规定日志的输入目的地。name 属性为appender的bean名称,不可重复。class为输出模式。

输出模式分为输出到控制台,文件,或者db,或者网络流。一般的我们将日志输出到文件,控制台。

ConsoleAppender:将日志输出到控制台。

FileAppender:将日志输出到固定的文件。

RollingFileAppender:将日志输出到文件,以不固定的形式。每天生成日志之类的形式。

在标签内有固定必须有的标签该标签有子标签标签内规定要输出的日志格式。

简单的ConsoleAppender模式只需要规定子标签即可。固定的输出源FileAppender则必须要指定另外

一个标签在标签内写入要输出的文件路径。

RollingFileAppender动态模式则有其特定的两种模式,在标签rollingPolicy>的class属性规定模式使用的类。

1 每天备份文件

TimeBasedRollingPolicy和SizeAndTimeBasedRollingPolicy模式规定了按照日期备份日志。其中

SizeAndTimeBasedRollingPolicy是TimeBasedRollingPolicy的子类。TimeBasedRollingPolicy的

标签指定备份文件的格式。规定日志保留的天数。如果超过配置

则删除老的,在改模式下,每天固定产出一个文件,隔天则对改文件备份。而SizeAndTimeBasedRollingPolicy则是多了两个属性规定了每个日志

文件的大小,如果超过规定大小,则产生备份文件。规定了每天最多产生文件的体积。

如果超出则删除老的,在改模式下,每天可以产出多个文件,但多个文件总大小不能超过否则删除老的。

2 固定的大小备份文件

FixedWindowRollingPolicy该模式不会按照日期备份,而是按照每个文件最大体积,如果超过则备份。

该模式有标签,标签为最少保留文件数,为最多保留文件数。

但改值默认为20,也就是最多保留20个文件。若要修改改值,则需要自定义类,继承FixedWindowRollingPolicy

重写MAX_WINDOW_SIZE属性,重写getMaxWindowSize()方法。否则一旦超过20个备份文件则删除老的。

除此之外还需要一个triggeringPolicy>标签,改标签与平级,用于设置每个文件的最大体积

标签内。

一般的我们会使用SizeAndTimeBasedRollingPolicy每天产生备份文件,并规定每个备份文件的大小。

第三部分

标签该标签name属性,规定了哪些包下的日志需要打印。level属性规定了日志级别。additivity如果为false则

不向上级传递。在标签内有子标签,该标签的属性 ref为标签的name值。连接起来就是,logger

标签规定了哪些包需要被记录日志。以及记录什么级别的日志。将这个规则指定到一个做对应的输出。

标签只有一个level属性规定了日志级别。标签是所有标签的父类,如果有标签未与

标签绑定,则可以在标签内通过标签通用规定。标签属性additivity为true则表示

标签传递。例如某个包需要打印error级别日志,而标签规定的level为info,则里配置的

对应的则也会打印该error日志。

除此之外,LogBack还可以向其他目标源输入日志。例如邮箱,数据库。通过继承体系图可以看出。

技术图片

 

 

 

 

 

SpringBoot整合LogBack一看就懂

标签:conf   size   dfs   文件路径   连接   opened   index   classpath   依赖   

原文地址:https://www.cnblogs.com/zumengjie/p/13256000.html


评论


亲,登录后才可以留言!