了解Spring Boot 2的默认登录配置
我正在创建一个Java Spring Boot2.1应用程序,该应用程序使用Maven添加Spring-boot-starter依赖项。如the documentation中所述,这将启用默认的Logback配置。此配置可以自由找到in this repository,并且包含我难以理解的语法。
1.神秘的破折号
我知道Spring属性是使用以下语法设置的
但是,在Logback配置的XML文件中,冒号后面总是有一个破折号。这是为什么?例如:${Property.name:ome DefaultValue}
属性名称=日志文件&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)中没有用于配置它的等效属性
如果要将该属性更改为其他值,则必须以某种方式设置LOG_FILE_TOTAL_SIZE_CAP属性。如何在仍使用Spring Boot提供的原始默认Logback配置XML的情况下执行此操作?<;totalSizeCap>;${LOG_FILE_TOTAL_SIZE_CAP:-0}<;/totalSizeCap&>
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等。
相关文章