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框架日志级别(任意版本)的主要内容,如果未能解决你的问题,请参考以下文章

spring boot动态修改es的连接地址

完结撒花!129 集 21 个小时,松哥自制的 Spring Boot2 系列视频教程杀青啦!

Spring Boot系列——如何集成Log4j2

SpringBoot整合日志

springboot动态修改配置文件

关于tk.mybatis.spring.mapper.SpringBootBindUtil$SpringBoot2Bind.bind(SpringBootBindUtil.java:129) ~[ma