java 单机接口限流处理方案
479
2022-08-24
spring boot线上日志级别动态调整的配置步骤
目录前言正文springboot版本:1.5.7配置文末结语
前言
日志模块是每个项目中必须的,用来记录程序运行中的相关信息。一般在开发环境下使用DEBUG级别的日志输出,为了方便查看问题,而在线上一般都使用INFO级别的日志,主要记录业务操作的日志。那么问题来了,当线上环境出现问题希望输出DEBUG日志信息辅助排查的时候怎么办呢?修改配置文件,重新打包然后上传重启线上环境,之前确实是这么做的。下面会介绍使用动态调整线上日志级别来解决这个问题。
正文
spring boot版本:1.5.7
实现起来超级简单,使用spring boot自带的LoggingSystem的api来动态设置日志级别,当然的项目需要提供动态调整的接口,来达动态调整的目的。不过博主项目使用了Apollo配置中心,利用其配置动态生效的特性,soso就搞定了,代码如下
@Service
public class DynamicLoggersConfig{
Logger logger= LoggerFactory.getLogger(getClass());
@ApolloConfig
private Config config;
private final static String LoggerTag="logging.level.";
private final LoggingSystem loggingSystem;
public DynamicLoggersConfig(LoggingSystem loggingSyshttp://tem) {
Assert.notNull(loggingSystem, "LoggingSystem must not be null");
this.loggingSystem = loggingSystem;
}
@ApolloConfigChangeListener
private void configChangeListter(ConfigChangeEvent changeEvent){
SetkeyNames=config.getPropertyNames();
for (String key:keyNames){
if (StringUtils.containsIgnoreCase(key,LoggerTag)){
String strLevel=config.getProperty(key,"info");
LogLevel level = LogLevel.valueOf(strLevel.toUpperCase());
loggihttp://ngSystem.setLogLevel(key.replace(LoggerTag,""),level);
logger.info("{}:{}",key,strLevel);
}
}
}
}
配置
和在spring环http://境下正常配置日志级别一样配置即可,如
logging.level.org.springframework = info
logging.level.com.yudianbank.sales = debug
logging.level.org.hibernate = info
如上代表spring体系工具开启INFO级别日志,业务系统开启DEBUG级别日志,hibernate开启INFO级别日志
文末结语
动态日志输出看似小功能,却能解决非常大的问题。各种环境bug排除都少不了看日志输出。文件提到的Apollo是携程开源的配置中心项目,顺道推广下,感谢携程开源给了我们这么好的产品。项目地址如下
Apollo项目地址:https://github.com/ctripcorp/apollo
以上就是spring boot线上日志级别动态调整的配置步骤的详细内容,更多关于spring boot线上日志级别动态调整的资料请关注我们其它相关文章!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~