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

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

配置 logging.config=classpath:logback.xml 

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

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

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

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

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

<configuration> 


    <!--    用来定义变量值,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使“${}”来使用变量。-->
    <property name="fixedFilePath" value="C:/Users/szwb295/Desktop/"/>

    <!--    获取时间戳字符串,他有两个属性key和datePattern-->
    <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.log</file>     
        <!--        对记录事件进行格式化。-->
        <encoder>      
            <pattern>${pattern}</pattern>    
        </encoder>
    </appender>


    <appender name="timeBased" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 如果不填写该属性,则当前活动文件名为 fileNamePattern 建议填写 -->
        <file>C:\Users\szwb295\Desktop\currentLog2.log</file>    
        <encoder>      
            <pattern>${pattern}</pattern>    
        </encoder>

        <!-- 按天产生文件,备份文件名称规则是 fileNamePattern maxHistory为最大保留天数。该类还有SizeAndTimeBasedRollingPolicy该类可设置每天每个文件最大多少。如果超过可以一天产生多个。 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${fixedFilePath}history.%d{yyyyMMdd}.log</fileNamePattern>
            <maxHistory>3</maxHistory>
        </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">
        <!-- 如果不填写该属性,则当前活动文件名为 fileNamePattern 建议填写 -->
        <file>C:\Users\szwb295\Desktop\currentLog3.log</file>    
        <encoder>      
            <pattern>${pattern}</pattern>    
        </encoder>

        <!-- 该类是 TimeBasedRollingPolicy的子类,对于文件体积计算的不是很准确-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${fixedFilePath}history.%d{yyyyMMdd}.%i.log</fileNamePattern>
            <maxHistory>1</maxHistory>
            <!-- 每个文件最大体积 超过则产生备份文件-->
            <maxFileSize>50kb</maxFileSize>
            <!-- 每天产生文件的最大体积,超过则删除备份文件 -->
            <totalSizeCap>200kb</totalSizeCap>
        </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.log</file> 
        <encoder>      
            <pattern>${pattern}</pattern>    
        </encoder>
        <!--RollingFileAppender的另一个模式FixedWindowRollingPolicy,不按照日期,只按照文件大小备份,但是测试发现并没有成功备份。不过这个也不经常用到 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">          
            <fileNamePattern>${fixedFilePath}history2.%d{yyyyMMdd}.%i.log.zip</fileNamePattern>      
            <!-- 最小文件数 -->    
            <minIndex>1</minIndex>   
            <!-- 最大文件数,超过最大数则删除备份文件 -->
            <maxIndex>3</maxIndex>      
        </rollingPolicy>
          
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">    
            <!-- 每个文件最大多体积,超过则备份文件 -->     
            <maxFileSize>100kb</maxFileSize>      
        </triggeringPolicy>
    </appender>


    <!-- 自定义包,该包中的指定level级别会打印。 additivity不想让传递。也就是说,不会向root标签传递,也就不会被其他的appender打印-->
    <logger name="com.dfsn.cloud.consumer.filelog1" level="ERROR" additivity="false">
        <appender-ref ref="fixedWindow"/>
    </logger>


    <!-- 日志级别    TRACE < DEBUG < INFO < WARN < ERROR   -->
    <root level="DEBUG">      
        <appender-ref ref="console"/>
        <appender-ref ref="fixedFile"/>
    </root>


</configuration>
View Code

相关文章: