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

推荐订阅源

博客园_首页
I
InfoQ
The Register - Security
The Register - Security
L
LangChain Blog
H
Help Net Security
The GitHub Blog
The GitHub Blog
S
Schneier on Security
博客园 - 【当耐特】
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
IT之家
IT之家
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
H
Heimdal Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Y
Y Combinator Blog
雷峰网
雷峰网
N
Netflix TechBlog - Medium
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
G
GRAHAM CLULEY
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
V
Visual Studio Blog
博客园 - 聂微东
PCI Perspectives
PCI Perspectives
Last Week in AI
Last Week in AI
A
Arctic Wolf
宝玉的分享
宝玉的分享
T
The Blog of Author Tim Ferriss
S
Secure Thoughts
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
SegmentFault 最新的问题
SecWiki News
SecWiki News
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
Schneier on Security
Schneier on Security
P
Proofpoint News Feed
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AI
AI
Engineering at Meta
Engineering at Meta

博客园 - 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 接管。