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

推荐订阅源

aimingoo的专栏
aimingoo的专栏
S
Securelist
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Schneier on Security
Schneier on Security
Attack and Defense Labs
Attack and Defense Labs
Vercel News
Vercel News
腾讯CDC
Google DeepMind News
Google DeepMind News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
量子位
S
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
Cyberwarzone
Cyberwarzone
S
Security Affairs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
T
Tenable Blog
PCI Perspectives
PCI Perspectives
MyScale Blog
MyScale Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cyber Attacks, Cyber Crime and Cyber Security
W
WeLiveSecurity
N
News | PayPal Newsroom
P
Proofpoint News Feed
O
OpenAI News
C
CERT Recently Published Vulnerability Notes
B
Blog
Cisco Talos Blog
Cisco Talos Blog
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy

博客园 - dirgo

Oracle关联表删除数据和更新数据 logback-spring.xml引入了base.xml日志文件默认生成在哪里? org/springframework/boot/logging/logback/defaults.xml的内容和作用 logback-spring.xml 中<include resource="org/springframework/boot/logging/logback/base.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&quot;字(Word)&quot;类型,最直接和正确的做法是使用其内置的 UShort 类型 centos7.9安装minio RELEASE.2025-04-22T22-12-26Z centos7.9编译安装nginx 1.28.1 linux(centos7.9)编译安装redis7.2.4 UFW 防火墙常用命令速查表
application.yml中Logback相关配置
dirgo · 2026-07-23 · via 博客园 - dirgo

[AI生成]
在 Spring Boot 中,application.yml(或 application.properties)提供了非常强大的日志配置能力。

重点在于:application.yml 中的配置,最终会被注入到 Logback 的 defaults.xml 里那些 ${} 变量中。

也就是说,如果你在 yml 里改了配置,就等于改变了 defaults.xml 里定义好的默认格式。

下面详细介绍 application.yml 中与日志相关的配置,分为几个常用模块。


1. 基础日志级别控制

这是最常用的配置,用于控制哪些包打印什么级别的日志。

logging:
  # 全局根日志级别
  level:
    root: INFO
    # 针对特定包/类设置级别 (优先级高于 root)
    com.example.demo: DEBUG
    # 只有特定包下的某些类
    com.example.demo.service.UserServiceImpl: TRACE
  
    # 关闭某些烦人的框架日志
    org.springframework: WARN
    org.hibernate.SQL: DEBUG  # 常用于开发环境打印执行的 SQL 语句

2. 日志文件输出控制

如果你只是想把日志输出到文件,并且让它自动按天滚动、自动清理,你甚至不需要写 logback-spring.xml,只在 yml 里配置即可(Spring Boot 底层会自动生成 RollingFileAppender)。

logging:
  file:
    # 日志文件名 (如果只配 name,不配 path,文件会生成在项目根目录)
    # name: myapp.log
  
    # 日志文件存放路径 (推荐使用绝对路径或相对路径)
    path: ./logs
  
    # 单个日志文件最大大小 (超过则触发文件切割滚动),默认 10MB
    max-size: 50MB
  
    # 保留的日志文件天数 (最大历史归档),默认 7天
    max-history: 30
  
    # 所有日志文件的总大小上限,超过自动清理最老文件,默认 0 (不限制)
    total-size-cap: 10GB
  
    # 历史归档日志的文件名格式 (默认支持 %d 日期和 %i 大小序号)
    clean-history-on-start: false # 项目启动时是否清理历史日志,默认 false

3. 修改默认输出格式 (重点)

在这里配置的格式,会强制覆盖 defaults.xml 中定义的 CONSOLE_LOG_PATTERNFILE_LOG_PATTERN

logging:
  pattern:
    # 修改控制台输出格式
    # 注意:如果你引入了 defaults.xml,你依然可以使用 %clr 来上色,如果不引入,%clr 会报错
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
  
    # 修改文件输出格式 (文件里一般不要带颜色控制符,否则查看时会有乱码 [32m 等)
    file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
  
    # 单独修改日期格式 (只改时间那一节的样式)
    dateformat: "yyyy-MM-dd HH:mm:ss.SSS"

4. 多环境配置 (Profiles)

这是 Spring Boot 结合 Logback 最强大的功能之一。你可以在 application.yml 中激活不同的环境,然后在自定义的 logback-spring.xml 中用 <springProfile> 区分。

application.yml:

spring:
  profiles:
    active: dev  # 当前激活 dev 环境

logback-spring.xml 中可以这么写(会根据 yml 激活的环境生效):

<!-- 开发环境:只输出到控制台,打印 DEBUG 级别 -->
<springProfile name="dev">
    <root level="DEBUG">
        <appender-ref ref="CONSOLE"/>
    </root>
</springProfile>

<!-- 生产环境:输出到文件,只打印 INFO 级别 -->
<springProfile name="prod">
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</springProfile>

5. 在 YAML 中自定义变量并传递给 Logback

如果你觉得 yml 里的配置还不够灵活,想在 yml 里定义自己的业务变量,然后交给 logback-spring.xml 读取,可以使用 <springProperty>

application.yml:

logging:
  # 自定义一个命名空间
  custom:
    app-name: "MyAwesomeApp"
    log-path: "/var/logs/myapp"

logback-spring.xml:

<configuration>
    <!-- 引入默认规则 -->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
  
    <!-- 从 yml 的 logging.custom 命名空间读取变量 -->
    <springProperty scope="context" name="APP_NAME" source="logging.custom.app-name"/>
    <springProperty scope="context" name="CUSTOM_LOG_PATH" source="logging.custom.log-path"/>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 使用读到的 yml 变量拼装路径 -->
        <file>${CUSTOM_LOG_PATH}/${APP_NAME}.log</file>
        <!-- 省略其他配置... -->
    </appender>
</configuration>

总结:到底用 yml 还是 logback-spring.xml?

  • 如果你只需要控制:日志级别、日志文件路径/大小/切割天数、简单修改控制台格式。
    👉 不需要建 logback-spring.xml,直接在 application.yml 里配即可,Spring Boot 会自动帮你搞定。

  • 如果你需要复杂的配置:比如想给不同的业务包输出到不同的文件里(com.a 输出 a.logcom.b 输出 b.log)、想使用复杂的按大小+时间滚动策略、想把日志推送到 ELK (Logstash) 或者 Kafka、想在日志中加上 Local的 PID 等复杂逻辑。
    👉 必须使用 logback-spring.xml,写在 yml 里的配置主要是为了传入参数(比如路径、开关),核心逻辑由 logback-spring.xml 接管。