spring boot线上日志级别动态调整的配置步骤

网友投稿 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小时内删除侵权内容。

上一篇:python读取配置文件configparser模块
下一篇:python实现计算标准偏差函数(python计算中位数,标准差)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~