【问题标题】:How to log application name in log4j2 by fetching name from bootstrap.yml in spring-boot?如何通过在 spring-boot 中从 bootstrap.yml 中获取名称来在 log4j2 中记录应用程序名称?
【发布时间】:2020-07-09 22:58:33
【问题描述】:

我想配置我的 log4j2.xml 文件来记录我的应用程序名称,方法是从 bootstrap.yml 中获取它。我已尝试使用以下 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 和过滤器来做到这一点。但我正在寻找可以直接从 bootstrap.yml 中获取值的东西。

【问题讨论】:

    标签: spring-boot logging log4j2


    【解决方案1】:

    从 Log4j 2.13.0 开始,通过包含 Log4j Spring Cloud Config Client jar,Spring Boot 应用程序可以使用 SpringLookup。有了这种支持,您应该能够做到:

    <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 管理。

    注意:Spring Boot 至少初始化日志记录 3 次。第一次初始化日志时 Spring 还没有初始化,Spring Lookup 将无法检索任何内容。如果 log4j2.component.properties 具有适当的设置(参见example),Log4j 仍然能够从 Spring Cloud Config 中检索其配置,但该配置需要考虑到应用程序名称将为空的事实。否则,可以使用类路径上的配置进行初始启动,然后在 Spring 初始化后使用 Spring Cloud Config 中的 log4j2.xml。

    【讨论】:

      猜你喜欢
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多