gpt4 book ai didi

java - 了解 Spring Boot 2 的默认 logback 配置

转载 作者:行者123 更新时间:2023-12-02 10:05:45 25 4
gpt4 key购买 nike

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

<强>1。神秘的破折号

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

${property.name:someDefaultValue}

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

<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}/>"

<强>2。更改属性名称

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

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

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

<强>3。缺失的属性

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

<totalSizeCap>${LOG_FILE_TOTAL_SIZE_CAP:-0} </totalSizeCap>

如果我想将此属性更改为其他值,我必须以某种方式设置 LOG_FILE_TOTAL_SIZE_CAP 属性。如何在仍然使用 Spring Boot 提供的原始默认 logback 配置 xml 的情况下执行此操作?

<强>4。我们被默认的附加程序困住了

logback xml 文件中唯一的附加程序逻辑是:

<root level="INFO">

<appender-ref ref="CONSOLE"/>

<appender-ref ref="FILE"/>

</root>

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

最佳答案

<强>1。神秘的破折号

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

Under certain circumstances, it may be desirable for a variable to have a default value if it is not declared or its value is null. As in the Bash shell, default values can be specified using the ":-" operator. For example, assuming the variable named aName is not defined, "${aName:-golden}" will be interpreted as "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 等。

关于java - 了解 Spring Boot 2 的默认 logback 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55348674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com