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>
相关推荐
i源5 小时前
IDEA好用的插件
java·intellij-idea
程序定小飞5 小时前
基于springboot的论坛网站设计与实现
java·开发语言·spring boot·后端·spring
ZHE|张恒6 小时前
Java 泛型详解:类型参数的力量
java
何中应7 小时前
如何使用Spring Context实现消息队列
java·后端·spring
四念处茫茫7 小时前
Rust:与JSON、TOML等格式的集成
java·rust·json
摸鱼仙人~7 小时前
一文深入学习Java动态代理-JDK动态代理和CGLIB
java·开发语言·学习
微知语7 小时前
Cell 与 RefCell:Rust 内部可变性的双生子解析
java·前端·rust
雨过天晴而后无语7 小时前
Windchill10+html使用Lightbox轻量化wizard的配置
java·前端·html
Yeniden7 小时前
设计模式>原型模式大白话讲解:就像复印机,拿个原件一复印,就得到一模一样的新东西
java·设计模式·原型模式·1024程序员节