了解 Spring Boot 2 的默认 logback 配置

Posted

技术标签:

【中文标题】了解 Spring Boot 2 的默认 logback 配置【英文标题】:Understanding Spring Boot 2's default logback configuration 【发布时间】:2019-08-16 08:04:05 【问题描述】:

我正在创建一个 Java Spring Boot 2.1 应用程序,它使用 Maven 添加 spring-boot-starter 依赖项。正如the documentation 中所写,这将启用默认的 logback 配置。这个配置可以在in this repository免费找到,包含的语法对我来说有点难以理解。

1.神秘的冲刺

我知道 Spring 属性是使用以下语法设置的

$property.name:someDefaultValue

但是,在用于 logback 配置的 xml 文件中,冒号后面总是有一个破折号。为什么是这样?例如:

2。不断变化的属性名称

我也不清楚所有这些属性名称的来源。在文档中提到用以下属性填充我们的 application.properties 或 application.yml:

logging.file = /app/logs/mylog.log

名称为 logging.file 的属性如何以及在何处转换为 logback xml 文件中使用的名称为 LOG_FILE 的属性?

3.缺失的属性

具体来说,该属性在 application.properties(或 .yml)中没有等效的属性来配置它

$LOG_FILE_TOTAL_SIZE_CAP:-0

如果我想将此属性更改为其他值,我必须以某种方式设置 LOG_FILE_TOTAL_SIZE_CAP 属性。如何在仍然使用 spring boot 提供的原始默认 logback 配置 xml 的同时做到这一点?

4.我们被默认的附加程序卡住了

logback xml 文件中唯一的 appender 逻辑是:

而 application.properties 不允许改变这一点。尽管我必须承认这是非常有用的默认设置,但有时它不起作用。为了对 appender 或策略进行一个小的调整,必须完全覆盖整个 logback xml 配置似乎有点过头了。如果我要在我的类路径上提供多个自定义 logback/xml 配置文件,logback 是否会“合并”它们,或者只是选择一个而忽略其他的?覆盖/合并如何工作,哪个 xml '获胜'?

【问题讨论】:

【参考方案1】:

1.神秘的冲刺

对于 logback:https://logback.qos.ch/manual/configuration.html。具体来说:

在某些情况下,变量可能需要 如果未声明或值为 null,则具有默认值。如在 Bash shell,可以使用“:-”指定默认值 操作员。例如,假设名为 aName 的变量不是 定义后,“$aName:-golden”将被解释为“golden”。

2。不断变化的属性名称

这应该有助于映射:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html。还戳org.springframework.boot.logging.LoggingSystemProperties

3.缺失的属性

我同意你的评价!也许在这里使用 LoggingSystemProperties 进行一些挖掘可能会有所帮助(在apply() 方法中?)。但更有可能通过提供自己的 logback.xml 来解决。

4.我们被默认的附加程序卡住了

这也是事实。请参阅https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html 的 83.1。实际上,我曾经合作过的每个项目都提供了自己的 log4j.xml、logback.xml 等。

【讨论】:

现在估计没有别的办法了

以上是关于了解 Spring Boot 2 的默认 logback 配置的主要内容,如果未能解决你的问题,请参考以下文章

spring-boot-starter-web 中默认的 JSON 错误响应来自哪里,如何调整?

「新特性」Spring Boot 全局懒加载机制了解一下

Spring Boot 默认的指标数据从哪来的?

Spring Boot日志配置及输出

初识Spring Boot (Spring Boot配置文件)

想学会 Spring Boot 你必须深刻了解这些概念