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.*)
可以为根日志器或任意包/类设置级别,可选值:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。
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 内置了 web 和 sql 两个组。
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.name与file.path同时写:只有name生效,path会被忽略。- 级别写成全大写:YAML 中需使用小写
trace/debug等,Spring Boot 通过宽松绑定转换,但写成TRACE在某些版本下可能不生效,建议统一用小写。 max-history/max-size已被废弃:新版推荐使用logging.logback.rollingpolicy.*系列属性。- 旧属性
logging.file:已被拆分为name和path,不要再使用。 - 想完全自定义日志格式:可写
logback-spring.xml并通过logging.config指向,能使用 Spring 扩展(如<springProfile>、<springProperty>);如果用logback.xml则无法享受这些扩展。 - Log4j2 用户:滚动策略需写在
log4j2-spring.xml中,logging.logback.rollingpolicy.*对它无效。

浙公网安备 33010602011771号