Apollo配置中心动态刷新日志级别

  • 添加次配置后,当在apollo上面调整日志级别不需要重启服务器,马上就能生效
/**
* 结合apollo动态刷新日志级别
* @author: nj
* @date: 2019/1/21:下午5:00
*/
@Configuration
public class LogListenerConfig {
private static final Logger logger = LoggerFactory.getLogger(LoggerConfiguration.class);
/**
* 监听关键字,当配置中心的依次开头的配置发生变化时,日志级别刷新
*/
private static final String LOGGER_TAG = "loggers.root."; @Autowired
private LoggingSystem loggingSystem; /**
* 可以指定具体的namespace,未指定时使用的是 application这个namespace
*/
@ApolloConfig
private Config config; @ApolloConfigChangeListener
private void onChange(ConfigChangeEvent changeEvent) {
refreshLoggingLevels();
} @PostConstruct
private void refreshLoggingLevels() {
Set<String> keyNames = config.getPropertyNames();
for (String key : keyNames) {
if (containsIgnoreCase(key, LOGGER_TAG)) {
String strLevel = config.getProperty(key, "info");
LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
//重置日志级别,马上生效
//loggingSystem.setLogLevel(key.replace(LOGGER_TAG, ""), level);
loggingSystem.setLogLevel("", level);
logger.info("{}:{}", key, strLevel);
}
}
} private static boolean containsIgnoreCase(String str, String searchStr) {
if (str == null || searchStr == null) {
return false;
}
int len = searchStr.length();
int max = str.length() - len;
for (int i = 0; i <= max; i++) {
if (str.regionMatches(true, i, searchStr, 0, len)) {
return true;
}
}
return false;
}
}

最新文章

  1. An AVPlayerItem cannot be associated with more than one instance of AVPlayer错误
  2. BI系统与KPI指标的整合分析
  3. 模拟器的tableView的分割线不显示
  4. Socket的连接问题
  5. web版扫雷小游戏(二)
  6. 176. [USACO Feb07] 奶牛聚会
  7. appache 在windows 中无法启动的测试
  8. java动态代理源码解析
  9. 第三节 pandas续集
  10. 随笔:关于Class.getSimpleName()
  11. Spring IOC 注入方式详解 附代码
  12. java-Unicode与中文的转换
  13. Tanya and Password CodeForces - 508D (欧拉回路)
  14. golang 入门之struct继承,嵌套
  15. 学习stm32 让我们一起回顾一下C语言吧
  16. C语言入门:01.C语言概述
  17. 删数问题(NOI94)
  18. bhp 阅读笔记 OSX 下 setuptools pip 安装
  19. Node.js Cookie管理
  20. C#实现字符串计算

热门文章

  1. c++ 读取不了hdf5文件中的字符串
  2. 折线图hellocharts的使用说明
  3. FCC(ES6写法) Exact Change
  4. Oracle:WITH AS () Merge ?
  5. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识
  6. Spring Boot druid监控页添加登录访问权限(用户名+密码)
  7. 关于CKEditor 4.0 过滤html标签
  8. Python内置函数(13)——complex
  9. json对象和json字符串
  10. 《深入理解Java虚拟机》-----第2章 Java内存区域与内存溢出异常