我想通过从bootstrap.yml中获取我的log4j2.xml文件来记录我的应用程序名称。我已经尝试使用以下log4j2.xml配置。
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<Properties>
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${springAppName} %c{1} :- %m%n
</Property>
</Properties>
但是似乎不起作用。我知道可以通过使用mdc和filter来做到这一点。但是我正在寻找可以直接从bootstrap.yml中获取值的东西。
从Log4j 2.13.0开始,通过包含SpringLookup jar,Log4j Spring Cloud Config Client可用于Spring Boot应用程序。有了这种支持,您应该可以:
<Properties>
<Property name="LOG_PATTERN">
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${spring:spring.application.name} %c{1} %m%n
</Property>
</Properties>
此外,如果需要,此支持还允许您的log4j2.xml文件由Spring Cloud Config管理。
Note:Spring Boot至少初始化日志记录3次。首次初始化日志记录时,Spring尚未初始化,Spring Lookup将无法检索任何内容。如果log4j2.component.properties具有适当的设置(请参见此example),则Log4j仍将能够从Spring Cloud Config中检索其配置,但是该配置需要考虑到应用程序名称为null的事实。否则,可以在类路径上使用配置进行初始启动,然后在Spring初始化后使用Spring Cloud Config中的log4j2.xml。