springboot里的application.yml文件的logging:下的配置

[AI生成]
在 Spring Boot 中,日志相关配置统一写在 application.yml(或 application.properties)里,前缀都是 logging.。下面把常用的配置项按用途分类整理,并附上一份可直接参考的完整示例。

说明:你提到的应该是 application.yml(YAML 语法,logging: 后用缩进),而不是 application.xml。XML 格式一般用于 Logback/Log4j2 自身的配置文件(如 logback-spring.xml),两者作用不同。

一、logging.* 主要配置项

1. 日志级别(logging.level.*

可以为根日志器或任意包/类设置级别,可选值:TRACEDEBUGINFOWARNERRORFATALOFF

logging:
  level:
    root: info
    org.springframework.web: debug
    org.hibernate: error
    com.example.myapp: debug

2. 日志文件输出(logging.file.*

默认只输出到控制台,需要写文件时必须配置其中之一;两者同时设置时以 name 为准,path 会被忽略。

属性 说明
logging.file.name 日志文件完整路径(含文件名),如 logs/app.log
logging.file.path 日志目录,会写入该目录下的 spring.log
logging.file.total-size-cap 所有归档日志总大小上限
logging.file.max-size 单个日志文件最大大小,超过即滚动
logging.file.max-history 保留的归档日志文件数量(旧版属性,新版推荐用 rollingpolicy)
logging.file.clean-history-on-start 启动时是否清理过期归档

3. 输出格式(logging.pattern.*

自定义控制台与文件中的日志格式,支持 Logback 的 pattern 占位符。

属性 说明
logging.pattern.console 控制台日志格式
logging.pattern.file 文件日志格式
logging.pattern.dateformat 日期时间格式(追加样式)
logging.pattern.level 日志级别的渲染格式,默认 %5p
logging.pattern.rolling-file-name 滚动文件名模式
logging.exception-conversion-word 异常堆栈转换词

4. 字符集与阈值(logging.charset.* / logging.threshold.*

属性 说明
logging.charset.console 控制台日志字符集
logging.charset.file 文件日志字符集
logging.threshold.console 控制台输出最低级别阈值
logging.threshold.file 文件输出最低级别阈值

5. 日志分组(logging.group.*

把多个 logger 打包成一组,便于统一调级。Spring Boot 内置了 websql 两个组。

logging:
  group:
    tomcat: org.apache.catalina, org.apache.coyote, org.apache.tomcat
  level:
    tomcat: trace

6. Logback 滚动策略(logging.logback.rollingpolicy.*

仅在使用 Logback(默认)时生效,其他框架需在各自 XML 中配置。

属性 说明
file-name-pattern 归档文件名模式,默认 ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
clean-history-on-start 启动时是否清理归档
max-file-size 单文件最大大小(默认 10MB)
total-size-cap 归档总大小上限
max-history 归档保留个数(默认 7)

7. 其他

属性 说明
logging.config 指定自定义日志配置文件路径,如 classpath:logback-spring.xml
logging.register-shutdown-hook 是否注册关闭钩子(默认 true)
logging.include-application-name 是否在日志中打印 spring.application.name
logging.include-application-group 是否打印 spring.application.group
logging.console.enabled 是否启用控制台输出
logging.structured.format.console/file 结构化日志格式:ecs / gelf / logstash
logging.structured.ecs.service.* ECS 格式的服务名、版本、环境等
logging.structured.json.* 结构化 JSON 的 include/exclude/rename/add/stacktrace 控制

二、完整示例

logging:
  # 1. 自定义日志配置文件(可选,优先级高于本文件中的大部分配置)
  config: classpath:logback-spring.xml
  # 2. 是否注册关闭钩子
  register-shutdown-hook: true
  # 3. 日志分组
  group:
    my-group: com.example.service, com.example.dao
  # 4. 日志级别
  level:
    root: info
    com.example: debug
    my-group: warn
    org.springframework.web: info
    org.hibernate.SQL: debug
  # 5. 文件输出
  file:
    name: logs/app.log          # 与 path 同时存在时,path 失效
    path: logs/
    max-size: 10MB
    max-history: 30
    total-size-cap: 1GB
    clean-history-on-start: false
  # 6. 输出格式
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
    dateformat: "yyyy-MM-dd HH:mm:ss.SSS"
    level: "%5p"
    rolling-file-name: "logs/app.%d{yyyy-MM-dd}.%i.gz"
  exception-conversion-word: "%wEx"
  # 7. 字符集与阈值
  charset:
    console: UTF-8
    file: UTF-8
  threshold:
    console: TRACE
    file: INFO
  # 8. Logback 滚动策略
  logback:
    rollingpolicy:
      file-name-pattern: "logs/app.%d{yyyy-MM-dd}.%i.gz"
      max-file-size: 10MB
      max-history: 30
      total-size-cap: 1GB
      clean-history-on-start: false

三、常见易错点

  • file.namefile.path 同时写:只有 name 生效,path 会被忽略。
  • 级别写成全大写:YAML 中需使用小写 trace/debug 等,Spring Boot 通过宽松绑定转换,但写成 TRACE 在某些版本下可能不生效,建议统一用小写。
  • max-history/max-size 已被废弃:新版推荐使用 logging.logback.rollingpolicy.* 系列属性。
  • 旧属性 logging.file:已被拆分为 namepath,不要再使用。
  • 想完全自定义日志格式:可写 logback-spring.xml 并通过 logging.config 指向,能使用 Spring 扩展(如 <springProfile><springProperty>);如果用 logback.xml 则无法享受这些扩展。
  • Log4j2 用户:滚动策略需写在 log4j2-spring.xml 中,logging.logback.rollingpolicy.* 对它无效。
posted @ 2026-09-10 17:01  dirgo  阅读(11)  评论(0)    收藏  举报