129. Spring Boot动态修改logback框架日志级别(任意版本)
Posted SpringBoot
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了129. Spring Boot动态修改logback框架日志级别(任意版本)相关的知识,希望对你有一定的参考价值。
需求缘起:
在上一篇博客中,我们使用了Spring Boot 1.5.x新特性实现了动态修改日志级别,有童鞋要问了,不行呢,我们现在项目用的1.3.3版本的。这时候又有人要说了,这还不简单嘛,直接上级到1.5.x。要是有那么简单就好了,升级到高版本了,是会碰到不少坑的,所以升级是需要谨慎的。如果我们非不能升级的话,那么我们怎么做呢?看看本章的内容吧。
本章大纲:
(1)原理
(2)获取当前日志等级
(3)修改日志等级
(4)更优的方案
接下来看下本节的内容:
(1)原理
日志框架中有一个工厂类:LoggerFactory,在这个类中可以获取到当前日志的上下文对象LoggerContext,通过LoggerContext可以获取到指定包的Logger ,通过Logger对象那就无所不能了。
(2)获取当前日志等级
先供上源码:
@RequestMapping(value = "/getLoglevel")
public Level getLoglevel( @RequestParam(value="package") String packageName) throws Exception {
LoggerContext loggerContext = (LoggerContext)LoggerFactory.getILoggerFactory();
return loggerContext.getLogger(packageName).getLevel();
}
这里先获取到了LoggerContext,通过loggerContext,获取到了指定包的Logger对象,通过logger对象中的getLevel()方法获取到当前包的日志级别。
{"levelInt":20000,"levelStr":"INFO"}
(3)修改日志等级
源码如下:
@RequestMapping(value = "/loglevel/{loglevel}")
public String loglevel(@PathVariable("loglevel") String logLevel, @RequestParam(value="package") String packageName) throws Exception {
//trace --> debug --> info --> warn --> error -->fatal
LoggerContext loggerContext =(LoggerContext)LoggerFactory.getILoggerFactory();
loggerContext.getLogger(packageName).setLevel(Level.valueOf(logLevel));
return "ok";
}
这里获取到LoggerContext之后,通过getLogger(packageName)获取到logger对象,通过logger对象的setLevel()方法,修改当前包的日志级别。
(4)更优的方案
这种方案是通过我们自己编码的方法进行实现的,好消息是spring boot在1.5.+版本之后就实现了动态修改日志级别。具体可以看之前的文章《SpringBoot 动态修改日志级别》进行实现。
视频+交流平台:
à Spring Boot视频
http://412887952-qq-com.iteye.com/blog/2344171
à Spring Boot交流平台
http://412887952-qq-com.iteye.com/blog/2321532
以上是关于129. Spring Boot动态修改logback框架日志级别(任意版本)的主要内容,如果未能解决你的问题,请参考以下文章
完结撒花!129 集 21 个小时,松哥自制的 Spring Boot2 系列视频教程杀青啦!
关于tk.mybatis.spring.mapper.SpringBootBindUtil$SpringBoot2Bind.bind(SpringBootBindUtil.java:129) ~[ma