Как записать имя приложения в log4j2, выбрав имя из bootstrap .yml в spring-boot? - PullRequest
0 голосов
/ 29 марта 2020

Я хочу настроить мой файл 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>

Но, похоже, не работает. Я знаю, что это можно сделать, используя md c и фильтр. Но я ищу что-то, что может напрямую извлекать значения из bootstrap .yml.

1 Ответ

0 голосов
/ 29 марта 2020

Начиная с Log4j 2.13.0 SpringLookup доступен для приложений Spring Boot, включая Log4j Spring Cloud Config Client jar. С помощью этой поддержки вы сможете:

<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 не сможет получить что-либо. Log4j по-прежнему сможет получать свою конфигурацию из Spring Cloud Config, если log4j2.component.properties имеет соответствующие настройки (см. Этот пример ), но эта конфигурация должна учитывать тот факт, что имя приложения будет значение NULL. В противном случае, конфигурация на пути к классам может использоваться для начального запуска, а затем log4j2. xml в Spring Cloud Config может использоваться после инициализации Spring.

...