0

我想使用 /refresh 端点更改日志级别。我知道执行器公开了一个不同的端点来处理日志级别,但我想从配置服务器的属性中做到这一点。

如果我将 logging.level.com.foo.bar=ERROR 放在我的本地属性文件中,Spring 能够配置这些值,但是如果我尝试从配置服务器覆盖 logging.level.com.foo.bar 的值,则不是选择,如果我不提供本地属性并且仅通过配置服务器提供它,它会失败并进行调试。

我认为这与 logback-spring.xml 上不存在 @RefreshScope 有点相关。

如何使 logback-spring.xml 符合 /refresh

这就是我的 logback-spring.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>
4

1 回答 1

0

在这种情况下,我认为 refreshScope 不会对您有所帮助。

  1. 您可以尝试以下方法来实现您的案例。
  2. 在配置中打开执行器的logger端点。

management.endpoints.web.exposure.include =“记录器”

  1. 请按照以下代码更改

在任何 @refreshScope 组件内添加以下代码

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

每次刷新调用后都会触发上述方法,因此这可以帮助您实现目标。

于 2020-02-26T12:47:11.627 回答