Spring Boot 日志 logback.xml配置解析

1.application.yml中配置logback.xml的位置

 

2.logback.xml文件

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

    <!--变量声明-->
    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
    <property name="FILE_ERROR_PATH" value="D:/logs/mall/mall.%d{yyyy-MM-dd}.%i.error.log" />
    <property name="FILE_INFO_PATH" value="D:/logs/mall/mall.%d{yyyy-MM-dd}.%i.info.log" />

    <!--定义控制台输出-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--输出INFO日志文件配置-->
    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按照上面配置的FILE_ERROR_PATH路径来保存日志 -->
            <fileNamePattern>${FILE_INFO_PATH}</fileNamePattern>
            <!-- 日志保存30天 -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 单个日志文件的最大,超过则新建日志文件存储 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--输出ERROR日志文件配置-->
    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--只记录ERROR级别的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按照上面配置的FILE_ERROR_PATH路径来保存日志 -->
            <fileNamePattern>${FILE_ERROR_PATH}</fileNamePattern>
            <!-- 日志保存30天 -->
            <maxHistory>30</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 单个日志文件的最大,超过则新建日志文件存储 -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <!-- 按照上面配置的LOG_PATTERN来打印日志 -->
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!--级别大于等于INFO的则在控制台打印 默认是debug-->
    <logger name="com.shop.admin" level="INFO" />

    <!--级别大于等于INFO的执行appender为FILE的配置-->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE_INFO" />
        <appender-ref ref="FILE_ERROR" />
    </root>

</configuration>

3.解析

property标签:声明变量-我这里声明了三个变量,方便下面的appender使用,该格式中 LOG_PATTERN为日志打印的格式,FILE_ERROR_PATH和FILE_INFO_PATH为日志文件所在路径。
%date :表示日期,%thread :表示线程名,%-5level :表示级别从左显示5个字符宽度,%logger{36} :表示 Logger 名字最长36个字符,%msg : 表示日志消息,%n : 是换行符。%i : 表示第 i 个文件,当日志文件达到指定大小时,会将日志生成到新的文件里,这里的 i 就是文件索引
appender标签:配置日志打印的位置,ConsoleAppender是用来表示日志输出到控制台,RollingFileAppender是用来表示日志将输出到文件,其字标签是其具体配置。logger标签是用来定义某个包或者某个类下的日志输出级别。root标签引用上面配置的三个appender否则appender无效。

4.结果

       控制台输出即name=console的appender为INFO级别(Logger配置的INFO级别),大于等于INFO级别的日志都会打印在控制。台。

       只为ERROR级别(filter控制)的日志会打印到由变量为FILE_ERROR_PATH声明的路径中。

       大于等于INFO级别的日志会打印到由变量为FILE_INFO_PATH声明的路径中。

5.调用

logger.debug("=====测试日志debug级别打印====");
logger.info("======测试日志info级别打印=====");
logger.error("=====测试日志error级别打印====");
logger.warn("======测试日志warn级别打印=====");
//String a1 = null;
//System.out.println( a1.length());

// 日志占位符使用
String aa = "testAA";
String bb = "testBB";
logger.info("aa:{};bb:{}", aa, bb);

6.结果

猜你喜欢

转载自blog.csdn.net/lei_da_gou/article/details/81108735
今日推荐