springboot使用logback配置详解

第一步:编写logback-spring.xml日志配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="60 seconds">
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 日志输出控制台格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!--日志文件输出格式-->
    <property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
    <!-- test文件路径 -->
    <property name="TEST_FILE_PATH" value="./test_log" />
    <!-- prod文件路径 -->
    <property name="PROD_FILE_PATH" value="./log" />
    <!--文件名称-->
    <property name="LOG_NAME" value="data-manage" />

    <!-- 开发环境 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>

    <!-- 测试环境 -->
    <springProfile name="test">
        <!-- 每天产生一个文件 -->
        <appender name="TEST_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <file>${TEST_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${TEST_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
                <maxHistory>30</maxHistory>
                <maxFileSize>100MB</maxFileSize>
            </rollingPolicy>
        </appender>
        <root level="INFO">
            <appender-ref ref="TEST_FILE" />
        </root>
    </springProfile>

    <!-- 生产环境 -->
    <springProfile name="prod">
        <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>${FILE_LOG_PATTERN}</pattern>
            </encoder>
            <file>${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!-- rollover daily -->
                <fileNamePattern>${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
                <maxHistory>30</maxHistory>
                <maxFileSize>100MB</maxFileSize>
            </rollingPolicy>
        </appender>
        <root level="INFO">
            <appender-ref ref="PROD_FILE" />
        </root>
    </springProfile>

</configuration>

第二步:配置日志文件位置
在这里插入图片描述
到此这样就配置好了!

配置文件解析

<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />

这一块是springboot默认的logback日志在控制台的打印效果,如果不配置,控制台就没有颜色区分比如
有颜色区分:
在这里插入图片描述
无颜色区分:
在这里插入图片描述

<!-- 日志输出控制台格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--日志文件输出格式-->
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- test文件路径 -->
<property name="TEST_FILE_PATH" value="./test_log" />
<!-- prod文件路径 -->
<property name="PROD_FILE_PATH" value="./log" />
<!--文件名称-->
<property name="LOG_NAME" value="data-manage" />

这一块是自定义的属性 CONSOLE_LOG_PATTERN和FILE_LOG_PATTERN是定义的日志的控制台输
出格式和文件输出格式,这是springboot默认的 需要自定义的也可以自己定义 网上一大堆。

TEST_FILE_PATH、PROD_FILE_PATH、LOG_NAME是生成文件日志的时候的路径和名称

<!-- 开发环境 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>

这是在控制打印日志的配置

<!-- 生产环境 -->
<springProfile name="prod">
    <appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
            <maxHistory>30</maxHistory>
            <maxFileSize>100MB</maxFileSize>
        </rollingPolicy>
    </appender>
    <root level="INFO">
        <appender-ref ref="PROD_FILE" />
    </root>
</springProfile>

这是输入日志文件的配置

<encoder>
    <pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>

pattern属性配置是日志的输出格式,是我们之前自定义的

<file>${PROD_FILE_PATH}${file.separator}${LOG_NAME}.log</file>

file属性配置的日志文件输出的路径和名称

<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 	<!-- rollover daily -->
  	<fileNamePattern>${PROD_FILE_PATH}${file.separator}${LOG_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  	<!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
  	<maxHistory>30</maxHistory>
  	<maxFileSize>100MB</maxFileSize>
</rollingPolicy>

fileNamePattern属性也是日志文件输出的名称和格式,表示一天生成一份日志文件,它会把file属性生成的日志文件LOG_NAME.log 在每天的凌晨改成LOG_NAME-yyyy-MM-dd.log

例如:2020年3月20日生成日志文件test.log,当天的日志记录信息都会记录在test.log中,当3月21日凌晨的时候会把3月20日test.log改成test-2020-03-20.log,同时会生成一份新的test.log,此配置是一天生成一份日志文件,当然也可以改成一个小时生成一份日志文件。

maxHistory属性表示日志保存的有效日期为30天

maxFileSize属性表示日志的大小最多为100MB 超过后会生成一份新的日志文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值