如何通过在spring-boot中从bootstrap.yml中获取名称来在log4j2中记录应用程序名称?

问题描述 投票:0回答:1

我想通过从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中获取值的东西。

spring-boot logging log4j2
1个回答
0
投票

从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。

© www.soinside.com 2019 - 2024. All rights reserved.