SpringBoot实用小技巧之如何动态设置日志级别

  

<强>

  

有时线上问题我们用打日志的方式来观察错误或埋点参数,但由于这些日志如果都打出来会占用大量存储空间而且覆盖了一些有效信息,所以线上级别一般设置信息,调试级别用作特殊情况下。此时如果线上想查看调试级别下的日志,又不能更改日志级别后重新发布该怎么办?

  

弹簧引导提供了日志级别动态配置功能,为我们的线上应用调试提供了很好的机制。在实际使用中需要结合Spring security提供的安全机制来保护装置提供的各种系统级端点的安全访问。

  

SpringBoot从版本1.5.1之后就提供了基于spring-boot-starter-actuator的端点/伐木工。通过该端点可以实现查看系统的package-path的日志级别,以及针对特定的package-path配置运行中的应用的日志级别的功能。

  

下面对动态调整日志的级别进行设置。

  

  

因为是基于Web的项目和利用执行机构提供的端点来进行配置,因此需要依赖:

        & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-web   & lt;/dependency>      & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-actuator   & lt;/dependency>      


  

  

执行机构提供的端点(端点),默认是需要安全认证才能够被访问的。因为里面涉及到一些敏感的信息。需要安全认证就需要配置spring security。为了方便首先配置不需要安全权限的。

  

在配置中设置<代码> management.security.enabled=false

  


  

  

我们可以发送得到请求到http://localhost: 8080/伐木者来获取支持的日志等级,以及系统(根)默认的日志等和各个包路径(com.xxx.commond等)对应的日志级别。

  

访问会返回所有的类的日志级别信息。

  

 SpringBoot实用小技巧之如何动态设置日志级别

  

<>强配置特定包的日志级别
  

  

通过/伐木工端点提供的帖子请求,修改包路径<代码> com.xxx.commond>   

发送帖子请求到,http://localhost: 8080/伐木工/com.xxx.commond,其中请求身体的内容如下:

        {   “configuredLevel”:“调试”   }      

再用得到的访问http://localhost: 8080/伐木工/com.xxx.commond查看当前的日志级别:
  

        {   configuredLevel:“调试”,   effectiveLevel:“信息”   }      


  

  

通过/伐木工配置的日志级别在应用重启时会恢复到系统的配置,如果想永久的配置日志的级别还是需要通过<代码> logging.level。package-path>   

第二种方法就比较简单了,如果你有传动装置作了服务端监控,则可以直接访问此监控服务,然后进入具体要调整日志级别的服务进入日志、直接进行点击设置即可,非常方便,其实内部帮你做了跟上面一样的请求。

  

 SpringBoot实用小技巧之如何动态设置日志级别

  

这样就可以动态的设置调试程序了,而不用重启服务,是不是非常方便。

  

部分内容引用参见:https://www.jb51.net/article/159805.htm

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。

SpringBoot实用小技巧之如何动态设置日志级别