惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
WordPress大学
WordPress大学
S
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
AWS News Blog
AWS News Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
NISL@THU
NISL@THU
T
Tor Project blog
L
Lohrmann on Cybersecurity
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
G
GRAHAM CLULEY
博客园_首页
K
Kaspersky official blog
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
AI
AI
爱范儿
爱范儿
Cloudbric
Cloudbric
MongoDB | Blog
MongoDB | Blog
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
I
InfoQ
腾讯CDC
O
OpenAI News
F
Full Disclosure
P
Privacy International News Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Webroot Blog
Webroot Blog
Forbes - Security
Forbes - Security
MyScale Blog
MyScale Blog
L
LangChain Blog
H
Help Net Security
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
人人都是产品经理
人人都是产品经理
S
Security @ Cisco Blogs
T
Tenable Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
博客园 - 三生石上(FineUI控件)
Attack and Defense Labs
Attack and Defense Labs
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - dirgo

application.yml中Logback相关配置 org/springframework/boot/logging/logback/defaults.xml的内容和作用 Spring Boot 项目 Logback 日志框架配置文件logback-spring.xml详解 Oracle DataBaseLink 提示密码过期 梅特勒托-托利多衡器串口连续输出数据格式的说明 utf-8编码详解 mybaits updateWrapper更新报错:无效的列类型: 1111 @RequestPart和@RequestParam有什么区别 如何避免Mass Assignment漏洞? 关于vxe-table v4 导出大数据量excel浏览器卡死问题的解决 开源的Linux换源和安装docker脚本 wsl常用命令 使用网页静默打印 在Oracle中,授予用户角色和权限 Linux下查看当前哪些端口在监听状态,哪些端口在连接状态 mobaxterm常用配置 Windows下udp工具 Oracle表空间用户授权创建dblink等操作 用nmap扫描找出某个网段下空闲的ip脚本 Oracle 19c 常用运维 SQL Linux下设置CDB/PDB 环境的Oracle19c开机启动 Oracle是 CDB/PDB 环境下,让PDB在数据库启动后自动打开 怎样禁止dbeaver点击导航中数据库自动切换sql编辑器所属的数据库 Oracle 19c占内存高的解决方法 sudo -i -u zhangsan 与su - zhangsan区别,在现代 Linux 系统中,推荐使用 sudo 进行权限切换 Linux 的目录结构英文全称(及可能的命名背景)和更详细的说明 利用 Logback 的热加载特性,安全的迁移日志,改变日志保存路径 Linux中查询进程内存占用 iotDB调整内存占用及注意事项 Eclipse Milo 处理PLC"字(Word)"类型,最直接和正确的做法是使用其内置的 UShort 类型 centos7.9安装minio RELEASE.2025-04-22T22-12-26Z centos7.9编译安装nginx 1.28.1 linux(centos7.9)编译安装redis7.2.4 UFW 防火墙常用命令速查表
logback-spring.xml 中<include resource="org/springframework/boot/logging/logback/base.xml"/>作用
dirgo · 2026-07-23 · via 博客园 - dirgo

[AI生成]
这一行代码的作用是:引入 Spring Boot 官方预定义的 Logback 基础配置文件。

logback-spring.xml 中,你可以把它理解为一个“宏”或者“包含文件”。当 Logback 启动并解析你的 logback-spring.xml 时,遇到这一行,它会自动去 classpath 中找到 org/springframework/boot/logging/logback/base.xml 这个文件,并把里面的全部内容原封不动地“粘贴(复制)”到当前的位置

下面详细拆解这行代码背后的机制和它具体引入了什么内容:

1. 它的文件位置在哪里?

Spring Boot 的 jar 包内部自带了这个文件。你可以在 Spring Boot 的源码或依赖包中找到它。它的真实路径在 Spring Boot 内部如下:
spring-boot-x.x.x.jar -> org/springframework/boot/logging/logback/base.xml

2. 这个 base.xml 里面到底有什么内容?

打开 Spring Boot 的源码,你会发现 base.xml 的内容大致如下:

<configuration>
    <!-- 再次引入默认的日志级别和转换规则 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!-- 定义控制台输出的 Appender,名字叫 CONSOLE -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>${CONSOLE_LOG_CHARSET}</charset>
        </encoder>
    </appender>

    <!-- 定义一个不是立即生效的文件输出 Appender,名字叫 FILE -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
            <charset>${FILE_LOG_CHARSET}</charset>
        </encoder>
        <!-- 具体的文件滚动策略配置... -->
    </appender>

    <!-- 根日志记录器,级别为 INFO,同时输出到控制台和文件 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

从中可以看出,base.xml 帮我们做完了以下几件“累活”:

  1. 引入了关键的 defaults.xml
    • defaults.xml 里定义了我们上次提到过的彩色日志转换规则%clr)。
    • 定义了默认的控制台输出格式 ${CONSOLE_LOG_PATTERN}
    • 定义了默认的文件输出格式 ${FILE_LOG_PATTERN}
    • 读取了 Spring Boot 的配置(如 application.yml 中设定的 logging.pattern.console 等变量)。
  2. 默认配置好了控制台输出 (CONSOLE):你不需要自己写 <appender name="CONSOLE" ...> 了。
  3. 默认配置好了文件输出 (FILE):包括按天滚动、文件大小限制等。
  4. 默认配置好了根日志级别 (root level="INFO")

3. 在你自己的 logback-spring.xml 中加上这行,意味着什么?

假设你的 logback-spring.xml 这样写:

<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
</configuration>

效果等同于:你完全采用了 Spring Boot 默认的日志配置(控制台带颜色输出、同时生成一个滚动文件、默认 INFO 级别)。

实际上,如果你仅仅需要默认配置,你连 logback-spring.xml 都不用建。Spring Boot 默认就会加载这个 base.xml

4. 为什么我们自己写了配置文件,还要引入它?

主要有两个常见场景:

场景 A:只是想在默认配置上做微调

引入 base.xml 后,Spring Boot 已经帮你定义好了名为 CONSOLEFILE 的 appender。你只需要写一点点代码即可,比如你想把 com.example.demo 包的日志级别改成 DEBUG,你不需要重新写一大堆 <appender><pattern>,直接这样写即可:

<configuration>
    <!-- 引入基础配置,生成了 CONSOLE 和 FILE 两个输出源,并设置了 root 为 INFO -->
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!-- 仅仅针对自己的包做特殊日志级别设置,且复用 base.xml 中的 CONSOLE -->
    <logger name="com.example.demo" level="DEBUG" additivity="false">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </logger>
</configuration>

场景 B:只引入 defaults.xml 而不引入 base.xml

有时候我们觉得 base.xml 太“黑盒”了,我们想自己完全掌控 CONSOLEFILE 的格式和文件路径,但我们又想白嫖 Spring Boot 提供的彩色格式 %clr 和那些环境变量

这时候,我们通常不引入 base.xml,而是引入更底层的 defaults.xml

<configuration>
    <!-- 只引入默认变量、规则和颜色 %clr,不自动生成 appender 和 root -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <!-- 自己定义 pattern,使用 defaults.xml 里提供的 ${CONSOLE_LOG_PATTERN} 变量 -->
    <appender name="MY_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
  
    <root level="INFO">
        <appender-ref ref="MY_CONSOLE"/>
    </root>
</configuration>

总结

<include resource="org/springframework/boot/logging/logback/base.xml"/> 的意思就是:
“让我用 Spring Boot 开箱即用的全套标准日志配置,我不想去手写那些复杂的彩色控制台模板和文件滚动策略了,直接拿来主义。”

特别提醒:如果你引入了 base.xml,就不要在你的配置文件里再次定义同名的 appender(比如叫 CONSOLEFILE)了,否则会导致日志被重复打印或者启动时抛出 Logback 的重名警告。