spring boot线上日志级别动态调整的配置步骤
作者:kl 时间:2022-09-19 01:57:45
前言
日志模块是每个项目中必须的,用来记录程序运行中的相关信息。一般在开发环境下使用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 loggingSystem) {
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());
loggingSystem.setLogLevel(key.replace(LoggerTag,""),level);
logger.info("{}:{}",key,strLevel);
}
}
}
}
配置
和在spring环境下正常配置日志级别一样配置即可,如
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
来源:http://www.kailing.pub/article/index/arcid/189.html
标签:springboot,日志级别,动态调整
0
投稿
猜你喜欢
C# 9.0 新特性之模式匹配简化的实现
2023-11-06 19:42:15
Android编程实现将应用强制安装到手机内存的方法
2022-09-09 23:02:08
Java 判断线程池所有任务是否执行完毕的操作
2021-10-03 09:43:55
JAVA 内存溢出案例汇总
2022-02-16 08:49:22
ThreadPoolExecutor中的submit()方法详细讲解
2022-02-18 03:02:39
C#从windows剪贴板获取并显示文本内容的方法
2022-06-03 01:56:47
一文给你通俗易懂的讲解Java异常
2021-12-20 14:40:56
C#使用dynamic类型访问JObject对象
2022-03-01 13:05:28
SpringBoot实现启动项目后立即执行的方法总结
2022-07-31 15:01:16
Java开发者就业需要掌握的9大专业技能
2021-11-13 12:01:54
SpringBoot集成elasticsearch使用图文详解
2021-06-06 16:12:47
Java基础详解之集合框架工具Collections
2021-11-09 02:40:32
解决Java导入excel大量数据出现内存溢出的问题
2023-05-30 08:41:20
java实现砸金蛋抽奖功能
2022-02-22 01:26:50
Android组件ViewStub基本使用方法详解
2022-01-15 07:30:54
Android自定义viewGroup实现点击动画效果
2022-09-01 00:27:07
springboot 项目启动后无日志输出直接结束的解决
2023-05-25 02:28:21
C#应用ToolStrip控件使用方法
2023-05-23 09:10:18
Android自定义UI手势密码终结版
2021-07-29 15:40:17
Feign远程调用Multipartfile参数处理
2022-09-22 02:46:24