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>
相关推荐
lhldsg12 小时前
全民健身解决方案小程序开发:从0到1的技术实战
java·数据库·需求分析
jason成都12 小时前
Spring WebFlux 适配达梦新方案|dm‑r2dbc:Netty 异步传输的实验性 R2DBC 驱动
java·后端·spring
泡海椒12 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
辰烨chenye12 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
小羊没烦恼!13 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
小荷才露尖尖角,早有蜻蜓立上头14 小时前
过滤器的4种创建方式
java
大圣编蚕14 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
程序员阿明14 小时前
idea把插件啥的不默认放在C盘
java·ide·intellij-idea
linweidong15 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
OpenAnolis小助手15 小时前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom