Java—Logback日志框架配置文件

简介

logback-spring.xml 是 Logback 日志框架的一个特殊配置文件,它主要用于与 Spring Boot 应用集成。logback-spring.xml 允许 Spring Boot 应用程序利用 Spring 的环境和其他特性(如 profile 切换)来配置 Logback。这使得在开发、测试和生产环境中灵活配置日志变得非常容易。

背景

积累知识。

教程

这里主要用于实现日志滚动策略:按天进行回滚,只保留近30天日志,日志总大小不超过2G,超过限制大小会删除最旧的日志,并且设置了在项目启动时就进行日志清理。

logback-spring.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>

<!--官网配置参考: https://logback.qos.ch/manual/appenders.html-->
<configuration>

    <!-- 彩色控制台控制 -->
    <substitutionProperty name="log.pattern" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) ${PID:-} %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/>
    <substitutionProperty name="log.pattern.no" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) ${PID:-} %clr(---){faint} %clr(%-80.80logger{79}){cyan} %clr(:){faint} %m%n%wEx"/>
    <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"/>

    <springProperty scope="context" name="LOG_FILE_DIR" source="logback.log-file-dir"
    defaultValue = "log"/>

    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <appender name="fileInfoLog" 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 class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${log.pattern.no}</pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径,每天滚存-->
            <fileNamePattern>${LOG_FILE_DIR}\info.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--单位天受%d{yyyy-MM-dd}影响-->
            <!--保留30天日志(保留近30天日志, 删除近30天至近60天日志, 更旧的日志不会删除-->
            <maxHistory>30</maxHistory>
            <!--总日志大小,日志满时删除最旧的日志,优先级低于maxHistory-->
            <totalSizeCap>2GB</totalSizeCap>
            <!--正常日志清除在第二天的第一个事件触发,如果在0点23分47秒内没有事件触发,则在0点23分47秒进行日志清除-->
            <!--程序启动时执行日志清除-->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
    </appender>

    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${log.pattern.no}</pattern>
            <!--<pattern>%msg%n</pattern>-->
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径,每天滚存-->
            <fileNamePattern>${LOG_FILE_DIR}\error.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--单位天受%d{yyyy-MM-dd}影响-->
            <!--保留30天日志(保留近30天日志, 删除近30天至近60天日志, 更旧的日志不会删除-->
            <maxHistory>30</maxHistory>
            <!--总日志大小,日志满时删除最旧的日志,优先级低于maxHistory-->
            <totalSizeCap>2GB</totalSizeCap>
            <!--正常日志清除在第二天的第一个事件触发,如果在0点23分47秒内没有事件触发,则在0点23分47秒进行日志清除-->
            <!--程序启动时执行日志清除-->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="fileInfoLog" />
        <appender-ref ref="fileErrorLog" />
    </root>

</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值