Как я могу прочитать свойства из spring application.yml и использовать его в моем log4j2. xml - PullRequest
0 голосов
/ 04 августа 2020

У меня есть свойства, определенные в application.yml, и я хочу использовать их в моем файле log4j2. xml.

**application.properties**

logging:
  levels:
    com.mypackage: INFO
  appenders:
    name: rollingfile

Я пробовал подход, указанный ниже, но не работал

    <Properties>
        <Property name="log-pattern">%d{ISO8601} %-5level {%thread} [%-40.40logger{39}] request_id=%X{requestId} %m%n</Property>
        <Property name="logging-level">${bundle:application:logging.levels.com.mypackage}</Property>
    </Properties>

<Loggers>       
        <Logger name="com.service" level="${logging-level}" includeLocation="true" additivity="false">
            <AppenderRef ref="${logging.appenders.name}"/>
        </Logger>
<Loggers>

Пожалуйста, помогите мне в разрешении чтения значения. Я не могу найти никакого рабочего решения.

1 Ответ

0 голосов
/ 05 августа 2020

Если вы используете Spring Boot, вы можете использовать клиентскую банку Spring Cloud Config Client от Log4j, которая предоставляет Spring Lookup. Затем вы можете ввести код:

    <Properties>
        <Property name="log-pattern">%d{ISO8601} %-5level {%thread} [%-40.40logger{39}] request_id=%X{requestId} %m%n</Property>
        <Property name="logging-level">${spring:logging.levels.com.mypackage}</Property>
    </Properties>
    <Loggers>       
        <Logger name="com.service" level="${logging-level}" includeLocation="true" additivity="false">
            <AppenderRef ref="${spring:logging.appenders.name}"/>
        </Logger>
    <Loggers>

Однако поиск Spring будет работать только после того, как Spring инициализирует свою среду. Spring Boot инициализирует ведение журнала как минимум 3 раза, и первый раз до того, как Spring что-нибудь сделает. В этом случае вам необходимо либо указать значения по умолчанию, либо другую конфигурацию только для первоначального запуска.

...