Logback 配置精细化包日志控制

用于 Spring Boot 应用的日志管理,核心作用是按级别分离日志、按时间滚动存储、仅保留 3 天日志,同时支持精细化包日志控制。

一、核心功能与配置解读

1. 基础配置(全局参数)

  • debug="true":开启 Logback 内部调试模式,启动时输出配置加载细节(仅建议开发 / 调试用)。
  • LOG_PATH="log/":日志存储路径(相对路径,应用启动目录下的 log 文件夹)。
  • LOG_PATTERN:日志输出格式,包含「时间 + 日志级别 + 类名 + 线程名 + 日志信息」,便于问题定位。

2. 三大日志输出目标(Appender)

Appender 名称 作用 核心特性
CONSOLE 控制台输出 输出所有符合级别的日志,用于实时查看。
FILE 全量日志文件 按天生成日志文件(命名格式 all.20241029.log),保留 3 天,总大小限制 1GB。
FILE_ERROR 错误日志文件 仅输出 WARN 及以上级别日志(错误、警告),独立存储便于快速排查异常,同样保留 3 天。

3. 日志级别与输出规则

  • 全局级别(root):INFO,即默认输出 INFO、WARN、ERROR 级别日志。
    • 全局日志会同时输出到「控制台 + 全量文件 + 错误文件」。
  • 自定义包级别(com.example):DEBUG,该包下输出 DEBUG 及以上级别日志(更详细)。
    • additivity="false":关闭日志继承,避免该包日志重复输出到父级 Appender(仅输出到自身指定的控制台 + 全量文件)。

二、实际使用效果

1.日志文件生成:

  • 全量日志:log/all.20241029.log(每天一个文件)。
  • 错误日志:log/error.20241029.log(仅存储警告和错误)。

2.日志清理:

  • 超过 3 天的日志文件会自动删除(maxHistory=3)。
  • 所有日志文件总大小超过 1GB 时,会优先删除最旧的文件(totalSizeCap=1GB)。

3.包日志差异:

  • com.example 包的 DEBUG 日志(如调试信息)会输出到控制台和全量文件。
  • 其他包仅输出 INFO 及以上级别日志,不包含 DEBUG 细节。
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <!-- 日志存储路径(可自定义,如 /var/log/myapp/ 或相对路径 logs/) -->
    <property name="LOG_PATH" value="log/"/>
    <!-- 日志输出格式 -->
    <property name="LOG_PATTERN"  value="%d{yyyy-MM-dd HH:mm:ss} %p [Class:%C{1}->Thread:%t] %m %n"/>

    <!-- 控制台日志:输出全部日志到控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>${LOG_PATTERN}</Pattern>
        </encoder>
    </appender>

    <!-- 文件日志:输出全部日志到文件() -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/all.%d{yyyyMMdd}.log</fileNamePattern>
            <!-- 保留3天的日志(超过3天自动删除) -->
            <maxHistory>3</maxHistory>
            <!-- 可选:限制总日志大小(防止磁盘占满,如总大小不超过1GB) -->
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 错误日志:用于将错误日志输出到独立文件 -->
    <appender name="FILE_ERROR"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error.%d{yyyyMMdd}.log</fileNamePattern>
            <!-- 保留3天的日志(超过3天自动删除) -->
            <maxHistory>3</maxHistory>
            <!-- 可选:限制总日志大小(防止磁盘占满,如总大小不超过1GB) -->
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>WARN</level>
        </filter>
    </appender>

    <!-- 全局日志级别(root 级别) -->
    <root>
        <level value="INFO"/>
        <appender-ref ref="CONSOLE"/><!-- 输出到控制台 -->
        <appender-ref ref="FILE"/> <!-- 输出到文件 -->
        <appender-ref ref="FILE_ERROR"/>
    </root>

    <!-- 自定义包的日志级别(可选,如 com.example 包用 DEBUG 级别) -->
    <logger name="com.example" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>

</configuration>
相关推荐
xcl09254 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐5 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长6 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn6 小时前
Spring 注解使用详解
java·spring
一条小小yu6 小时前
Spring IoC的理解
java·后端·spring
落魄实习生6 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈6 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白8 小时前
核心功能(Service接口)
java·mybatis
乌暮9 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习