Изменение уровня журнала с помощью свойств с сервера конфигурации Spring Cloud - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу изменить уровни журнала, используя / refre sh конечную точку. Я знаю, что привод предоставляет другую конечную точку только для работы с уровнями журнала, но я хотел бы сделать это из свойств сервера конфигурации.

Если я добавлю logging.level.com.foo.bar = ERROR в свой локальный файл Файлы свойств Spring может настроить эти значения, но если я попытаюсь переопределить значение logging.level.com.foo.bar с сервера конфигурации, оно не будет выбрано, и если я не передам локальное свойство и передам его только через сервер конфигурации, произойдет сбой. и падает для отладки.

Я думаю, что это в некоторой степени связано с отсутствием @RefreshScope в logback-spring. xml.

Как сделать logback-spring. xml / refre sh

вот так выглядит моя пружина отката. xml на данный момент выглядит так.

<configuration scan="true" scanPeriod="15 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

 <springProperty scope="context" name="logLevel" source="logging.level"/>
    <logger name="com.foo.bar.springclient.spring.boot.management.logging" level="INFO" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>
<configuration scan="true" scanPeriod="15 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

 <springProperty scope="context" name="logLevel" source="logging.level"/>
    <logger name="com.foo.bar.springclient.spring.boot.management.logging" level="INFO" />

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

1 Ответ

0 голосов
/ 26 февраля 2020

Я не думаю, что refreshScope поможет вам в этом случае.

  1. Вы можете попробовать следующий метод для достижения вашего случая.
  2. Открыть конечную точку привода logger в конфигурации.

management.endpoints. web.exposure.include = "logger"

Пожалуйста, следуйте приведенным ниже изменениям кода

Внутри любого компонента @refreshScope добавьте ниже кусок кода

@EventListener(final RefreshScopeRefreshedEvent event){
     // code to do POST call for changing desired logger level
}

Вышеуказанный метод будет запускаться после каждого обновления sh позвоните, так что это может помочь вам достичь вашей цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...