Apollo中如何实现日志级别动态设置

Apollo中如何实现日志级别动态设置?

实现日志级别动态配置,就是通过修改配置文件,不用启动项目就可以实时更新日志级别
我们项目中用的是Apollo配置中心

主要的思路就是:
1、在配置中心添加日志级别相关配置,要以logging.level.开头
2、代码中,监听apollo配置改变事件中要对更新的配置进行处理

ApolloConfig中:


@Autowired
private LoggingSystem  loggingSystem;

@Value("${logging.level.root:warn}")
private String  defaultLogLevel;

//默认日志key
public static final String DEFAULT_LOG_KEY = "logging.level.root";

//日志级别前缀
public static final String LOGGER_TAG = "logging.level.";

@ApolloConfigChangeListener
private void  changeHandler(ConfigChangeEvent changeEvent){

        Set<String> strings = changeEvent.changedKeys(); 
        strings.stream().filter(str -> str.startsWith(LOGGER_TAG)).forEach(str -> {
            ConfigChange change = changeEvent.getChange(str);
            String strLevel = StringUtils.isBlank(change.getNewValue()) ? defaultLogLevel : change.getNewValue();
            String newLevel = LogLevel.valueOf(strLevel.toUpperCase());
            loggingSystem.setLogLevel(str.replace(LOGGER_TAG,""),newLevel);
        });
}

如果同时设置某个类和root日志级别时,出现类上的日志级别不生效问题,参考我后面的文章:在java中,设置logging.level.root 和类的日志级别,类上的日志级别不生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值