首页 > 解决方案 > 从 Consul 读取应用程序属性

问题描述

我有一个定义了一些记录器的 Spring Boot 应用程序。我想在运行时更改记录器的日志级别。

为此,我使用Consul将记录器名称和日志级别存储为键/值对:

key: package1.SomeLogger1, value: DEBUG
key: package2.SomeLogger2, value: INFO
...

目前该应用程序只能检测值变化并应用相应的级别。下面的代码做到了:

import org.springframework.cloud.context.environment.EnvironmentChangeEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.env.Environment;
...
@Autowired
Environment environment;
...
    @EventListener
    public void handleContextStart(EnvironmentChangeEvent event) {
        Set<String> keys = event.getKeys();

        keys.forEach(
            loggerName -> {
                String level = environment.getProperty(loggerName);

        // Update the logger's log level
...

但是需要做什么才能让应用程序在启动后从 Consul 读取它们?

标签: spring-bootconsulspring-cloud-consul

解决方案


推荐阅读