专栏首页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 条评论
登录 后参与评论

相关文章

  • SpringBoot 动态设置 logback 日志的级别

    SpringBoot 默认采用 Logback 日志作为记录日志的框架。在项目中,一般分为 dev 环境(开发环境)、test环境(测试环境)和 prd 环境(...

    java乐园
  • Spring高级技术梳理

    在学习了Spring框架后 ,我们又学习了SpringMVC , RBAC ,Shiro框架这些中级Spring知识, 如果感兴趣的话请看本人Spring技术分...

    时间静止不是简史
  • Mall电商实战项目专属学习路线,主流技术一网打尽!

    由于mall项目涵盖了现阶段主流技术,如果你是个Java初学者的话,最好先看下面的资料打个基础,资料具体介绍可以参考mall学习所需知识点。

    macrozheng
  • SpringBoot图文教程2—日志的使用「logback」「log4j」

    不过,作为钢铁直男程序员的我,要分享的并不是 You jump,I jump ,而是 咋沉的?原因咋发现的?

    鹿老师的Java笔记
  • SpringBoot系列

    官网:https://projects.spring.io/spring-boot

    IT小马哥
  • 教你搭SpringBoot环境

    springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了。抛开微服务、技术社区这些推广因素不说,框架本身的确有非常多的优点。比如

    Java3y
  • 你居然还去服务器上捞日志,搭个日志收集系统难道不香么!

    ThresholdFilter:临界值过滤器,过滤掉低于指定临界值的日志,比如下面的配置将过滤掉所有低于INFO级别的日志。

    macrozheng
  • 补习系列-springboot项目基础搭建课

    springboot 最近火的不行,目前几乎已经是 spring 家族最耀眼的项目了。抛开微服务、技术社区这些推广因素不说,框架本身的确有非常多的优点。比如

    美码师
  • 【程序源代码】《Spring Boot开发笔记》日志管理​

    这套笔记和源码是我自己在学习springboot开发中实际一个字一个字敲出来的。因为这套开发笔记是逐步整理出来的,每期会介绍不同的技术开发点。所以请大家关注公众...

    程序源代码
  • 【程序源代码】《Spring Boot开发笔记》日志管理​

    这套笔记和源码是我自己在学习springboot开发中实际一个字一个字敲出来的。因为这套开发笔记是逐步整理出来的,每期会介绍不同的技术开发点。所以请大家关注公众...

    程序源代码
  • spring boot之从零开始开发自己的网站

    Janti
  • 万字详解logback日志框架,再没这么全的了!

    老项目中日志使用混乱,某些项目使用log4j,某些项目使用logback,统一是必须的。既然Spring Boot已经将logback做为默认集成的日志框架,全...

    程序新视界
  • 微服务中网关(API Gateway)的技术选型

    用 Spring Cloud 微服务实战中,大家都知道用 Zuul 作为智能网关。API 网关(API Gateway)主要负责服务请求路由、组合及协议转换。下...

    天涯泪小武
  • 2017年终总结

    又到了写年终总结的时候了。每当这个时候思绪总是翻江倒海,因为太久没有反思和总结的缘故,一年才总结一次,确实是有点久,欠的账的太多,梳理起来有点费劲。这里依旧还是...

    codecraft
  • SpringBoot 系列-日志详解

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

    用户4044670
  • SpringBoot系列之日志框架使用教程

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    SmileNicky
  • Spring Boot笔记

    –jdk1.8:Spring Boot 推荐jdk1.7及以上;java version “1.8.0_112”

    瑞新
  • LogBack 日志等级设置无效,原因竟然是因为这个?!

    好了,回到正题,今天来讲下最近调试项目的时候发现的一个 Logback 日志级别设置不生效的问题。

    andyxh
  • 快速学习-SpringBoot实践

    接下来,我们来看看如何用SpringBoot来玩转以前的SSM,我们沿用之前讲解SSM用到的数据库tb_user和实体类User

    cwl_java

扫码关注云+社区

领取腾讯云代金券