我正在基于Spring Boot的Web应用程序上工作,并希望使用log4j2作为记录器实现。
使用log4j2-spring.xml文件中定义的日志记录配置,一切正常。
无法正常工作:我想在log4j2-spring.xml文件中使用属性占位符,该占位符应从用于配置Spring Boot的application.yml文件中定义的属性中解析。
这可能吗?如果是,怎么办?
无法log4j2-spring.xml
通过via属性占位符直接替换属性,因为它不在Spring的范围之内,仅用于配置目的。log4j2-spring.xml
但是,您可以利用此处Log4j2
概述的属性替换的即用型功能。
步骤1-在log4j2-spring.xml
下面指定属性名称及其变量
<Configuration status="warn">
<Properties>
<Property name="someProp">${bundle:test:someKey}</Property>
</Properties>
<!--other configs -->
</Configuration>
第2步-在日志配置中使用上面定义的属性,例如后缀来记录文件名
<Appenders>
<File name="file" fileName="/path/to/logs/app-${someProp}.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %-40c{1.} - %m%n"/>
</File>
</Appenders>
第3步-创建一个捆绑包(即属性文件)以保存属性值,例如test.properties
# properties for log4j2
someKey=someValue
someKey1=someValue1
在您的情况下,该文件将包含您希望在log4j2配置中使用的yaml中的值。如果这些属性也可以在应用程序中使用,它们将在yaml中复制,并且捆绑包(即属性文件)应该是可以接受的折衷方案,因为spring不能将它们注入log4j2配置中。
如果需要更多信息,请在评论中告知。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句