了解Spring Boot 2的默认注销配置

时间:2019-03-26 01:38:31

标签: java spring spring-boot logging logback

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

1。神秘的破折号

我知道Spring属性是通过以下语法设置的

  

$ {property.name:someDefaultValue}

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

  

<属性名称=“ 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)中没有等效的属性可以对其进行配置

  

$ {LOG_FILE_TOTAL_SIZE_CAP:-0}

如果我想将此属性更改为其他值,则必须以某种方式设置LOG_FILE_TOTAL_SIZE_CAP属性。在仍然使用Spring Boot提供的原始默认Logback配置xml的情况下该怎么做?

4。我们被默认的附加器困住了

logback xml文件中唯一的追加器逻辑是:

  

     

     

     

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

1 个答案:

答案 0 :(得分:1)

1。神秘的破折号

对于登录: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等。