













[AI生成]
在 Spring Boot 中,日志相关配置统一写在 application.yml(或 application.properties)里,前缀都是 logging.。下面把常用的配置项按用途分类整理,并附上一份可直接参考的完整示例。
说明:你提到的应该是
application.yml(YAML 语法,logging:后用缩进),而不是application.xml。XML 格式一般用于 Logback/Log4j2 自身的配置文件(如logback-spring.xml),两者作用不同。
logging.* 主要配置项logging.level.*)可以为根日志器或任意包/类设置级别,可选值:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。
logging:
level:
root: info
org.springframework.web: debug
org.hibernate: error
com.example.myapp: debug
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 |
启动时是否清理过期归档 |
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 |
异常堆栈转换词 |
logging.charset.* / logging.threshold.*)| 属性 | 说明 |
|---|---|
logging.charset.console |
控制台日志字符集 |
logging.charset.file |
文件日志字符集 |
logging.threshold.console |
控制台输出最低级别阈值 |
logging.threshold.file |
文件输出最低级别阈值 |
logging.group.*)把多个 logger 打包成一组,便于统一调级。Spring Boot 内置了 web 和 sql 两个组。
logging:
group:
tomcat: org.apache.catalina, org.apache.coyote, org.apache.tomcat
level:
tomcat: trace
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) |
| 属性 | 说明 |
|---|---|
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 会被忽略。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-spring.xml 中,logging.logback.rollingpolicy.* 对它无效。此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。