spring-boot - 从 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 读取它们?
解决方案
推荐阅读
- scala - 从数据框中删除任何列为空或为空的记录
- c# - 如何在 wpf 中使用文件夹浏览器对话框
- xml - XML 到 SAS 数据集 - 性能
- api - 通过 Microsoft Graph API 写入 Excel 电子表格 - 无法获取 WAC 访问令牌
- javascript - React button background change on toggle give error(使用 React Hooks)
- c# - 不覆盖 C# 窗口窗体中保存的 xml 文件
- apache - 尝试安装 mod_jk 时出错 - Centos 8
- c# - 排序和分组列表数据
- php - 如果未使用 php 会话登录,则使用户重定向
- java - IntelliJ IDEA 为 JavaFX 应用程序创建 MSI 安装程序