Apollo 自动刷新示例

This commit is contained in:
YunaiV
2020-01-27 16:55:39 +08:00
parent e55eb2b093
commit 7938fdc60a

View File

@@ -1,9 +1,15 @@
package cn.iocoder.springboot.lab45.apollodemo.listener;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfig;
import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Set;
@Component
public class LoggingSystemConfigListener {
@@ -16,22 +22,24 @@ public class LoggingSystemConfigListener {
@Resource
private LoggingSystem loggingSystem;
// @NacosConfigListener(dataId = "${nacos.config.data-id}", type = ConfigType.YAML, timeout = 5000)
// public void onChange(String newLog) throws Exception {
// // 使用 DefaultYamlConfigParse 工具类,解析配置
// Properties properties = new DefaultYamlConfigParse().parse(newLog);
// // 遍历配置集的每个配置项,判断是否是 logging.level 配置项
// for (Object t : properties.keySet()) {
// String key = String.valueOf(t);
// // 如果是 logging.level 配置项,则设置其对应的日志级别
// if (key.startsWith(LOGGER_TAG)) {
// // 获得日志级别
// String strLevel = properties.getProperty(key, "info");
// LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
// // 设置日志级别到 LoggingSystem 中
// loggingSystem.setLogLevel(key.replace(LOGGER_TAG, ""), level);
// }
// }
// }
@ApolloConfig
private Config config;
@ApolloConfigChangeListener
public void onChange(ConfigChangeEvent changeEvent) throws Exception {
// 获得 Apollo 所有配置项
Set<String> keys = config.getPropertyNames();
// 遍历配置集的每个配置项,判断是否是 logging.level 配置项
for (String key : keys) {
// 如果是 logging.level 配置项,则设置其对应的日志级别
if (key.startsWith(LOGGER_TAG)) {
// 获得日志级别
String strLevel = config.getProperty(key, "info");
LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
// 设置日志级别到 LoggingSystem 中
loggingSystem.setLogLevel(key.replace(LOGGER_TAG, ""), level);
}
}
}
}