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

所属分类: 软件编程 / java 阅读数: 45
收藏 0 赞 0 分享

前言

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

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

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

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

先引入Actuator依赖

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

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>
 
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

安全配置

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

在配置中设置 management.security.enabled=false

GET 请求访问

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

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

配置特定包的日志级别

通过 /loggers 端点提供的 POST 请求,修改包路径com.xxx.commond的日志级别为DEBUG:

发送POST 请求到  http://localhost:8080/loggers/com.xxx.commond,其中请求 Body 的内容如下:

{
"configuredLevel": "DEBUG"
}

再用GET 访问 http://localhost:8080/loggers/com.xxx.commond查看当前的日志级别:

{
configuredLevel: "DEBUG",
effectiveLevel: "INFO"
}

注意:

通过 /loggers 配置的日志级别在应用重启时会恢复到系统的配置,如果想永久的配置日志的级别还是需要通过logging.level.package-path 来进行配置。

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

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

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

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

更多精彩内容其他人还在看

java实现背单词程序

这篇文章主要为大家详细介绍了java实现背单词程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java实现单词查询小程序

这篇文章主要为大家详细介绍了java实现单词查询小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java程序开发环境配置图文教程

这篇文章主要为大家详细介绍了Java程序开发环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解ssh框架原理及流程

在本文中小编给大家整理的是关于ssh框架原理及流程的相关知识点内容,有此需要的朋友们可以学习下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解springmvc常用5种注解

在本篇里我们给大家总结了关于springmvc常用5种注解相关知识点以及实例代码,需要的朋友们参考下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作(2)

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Spring Boot假死诊断实战记录

这篇文章主要给大家介绍了关于Spring Boot假死诊断的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java计时新姿势StopWatch详解

这篇文章主要介绍了Java计时新姿势StopWatch,最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时的新姿势「StopWatch」,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现点击按钮弹出新窗体功能

这篇文章主要为大家详细介绍了java实现点击按钮弹出新窗体功能,旧窗体不进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多