了解Spring Boot 2的默认登录配置

2022-04-19 00:00:00 logging spring java spring-boot logback

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

1.神秘的破折号

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

${Property.name:ome DefaultValue}

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

属性名称=日志文件&value=";${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}/>;";

2.更改属性名称

我也不清楚所有这些属性名称从何而来。在文档中提到使用如下属性填充我们的应用程序.Properties或Applation.yml:

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

如何以及在何处将名为logging.file的属性转换为Logback XML文件中使用的名为LOG_FILE的属性?

3.丢失的属性

具体地说,此属性在Applation.Properties(或.yml)中没有用于配置它的等效属性

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

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

4.我们使用默认附加器

Logback XML文件中唯一的附加器逻辑是:

<;根级别=&infot;>;

<;附加器-ref=";控制台;/&>

<;附加器-ref=";文件;/&>

<;/根&>

和Applation.Properties不允许更改这一点。尽管我必须承认这是非常有用的默认设置,但有时它并不起作用。为了一个附加器或策略的一个小调整,必须完全覆盖整个Logback XML配置,这似乎有点过头了。如果我在类路径上提供多个自定义Logback/XML配置文件,Logback会合并它们,还是只选择一个而忽略其他文件?覆盖/合并是如何工作的,哪个XML‘赢’?


解决方案

1.神秘的破折号

用于登录:https://logback.qos.ch/manual/configuration.html。具体如下:

在某些情况下,变量可能需要 如果未声明或其值为空,则使用默认值。如中所示 在Bash外壳中,可以使用":-"指定默认值 接线员。例如,假设名为aName的变量不是 定义后,"${aName:-Golden}"将被解释为"Gold"。

2.更改属性名称

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

3.丢失的属性

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

4.我们使用默认附加器

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

相关文章