了解 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 错误响应来自哪里,如何调整?