专栏首页james大数据架构SpringBoot实用小技巧之动态设置SpringBoot日志级别

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

  有时线上问题我们用打日志的方式来观察错误或埋点参数,但由于这些日志如果都打出来会占用大量存储空间而且覆盖了一些有效信息,所以线上级别一般设置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://blog.csdn.net/u014684364/article/details/81289696

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 零代码如何打造自己的实时监控预警系统

    概要 为什么要做监控 线上发布了服务,怎么知道它一切正常,比如发布5台服务器,如何直观了解是否有请求进来,访问一切正常。 当年有一次将线上的库配置到了Beta,...

    欢醉
  • Jquery基本用法总结

    选择器 $("#mydiv") 通过ID $("p#myp") 选择id=myp 的所有p元素(组合型) $(".mydiv") 通过 class="mydi...

    欢醉
  • JQuery实现仿sina新浪微博新鲜事滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or...

    欢醉
  • 基于 Apache Flink 的实时 Error 日志告警

    大数据时代,随着公司业务不断的增长,数据量自然也会跟着不断的增长,那么业务应用和集群服务器的的规模也会逐渐扩大,几百台服务器在一般的公司已经是很常见的了。那么将...

    zhisheng
  • SpringBoot 系列-日志详解

    默认情况下,如果使用 “starters”,则使用 Logback 进行日志记录。还包括适当的 Logback 路由,以确保使用 Java Util 日志记录、...

    用户4044670
  • Python2 进程扫描脚本 原

    因近期有开发人员在跑脚本时占用系统内存太多导致系统其它进程宕掉,所以需要对系统进程进行扫描监控,如果检测到占用系统内存大于5G的进程就直接kill掉,但是担心误...

    阿dai学长
  • 如何使用ELK Stack分析Oracle DB日志

    随着业务的发展,服务越来越多,相应地,日志的种类和数量也越来越多。一般地,我们会用grep、awk,或者编写脚本进行日志分析。对于多个服务构成的系统,需要人为把...

    王录华
  • 推荐 | 10个好用的Web日志安全分析工具

    首先,我们应该清楚,日志文件不但可以帮助我们溯源,找到入侵者攻击路径,而且在平常的运维中,日志也可以反应出很多的安全攻击行为。

    辞令
  • 推荐 | 10个好用的Web日志安全分析工具

    首先,我们应该清楚,日志文件不但可以帮助我们溯源,找到入侵者攻击路径,而且在平常的运维中,日志也可以反应出很多的安全攻击行为。

    Bypass
  • Core + Vue 后台管理基础框架9——统一日志

      前阵子有园友留言,提到日志相关的东西,同时,最近圈子里也有提到日志这个东西。一个充分、集中的统一日志平台还是很有必要的,否则系统出问题了只能靠猜或者干瞪眼。...

    guokun

扫码关注云+社区

领取腾讯云代金券