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

SpringBoot实用小技巧之动态设置SpringBoot日志级别相关推荐

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

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

  2. 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧试读版

    零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二 ...

  3. 送你16个matplotlib绘图实用小技巧(附代码)

    来源:雪山飞猪 本文约2800字,建议阅读10分钟 本文为你分享16个matplotlib绘图实用小技巧. 标签:数据分析 1. 添加标题-title import numpy as npimport ...

  4. VC的若干实用小技巧

    Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意.作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助. 1:使用vc开发项目时,常会遇到这种 ...

  5. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断

    https://www.jianshu.com/p/93e8459b6dae 2017.06.01 01:13* 字数 674 阅读 1201评论 0喜欢 1 2017.06.01 01:13* 字数 ...

  6. VC的若干实用小技巧 (如何干净的删除一个类)

    Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意.作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助. 1:使用vc开发项目时,常会遇到这种 ...

  7. 20个你应该知道的iPhone 7实用小技巧

    听说iOS 11马上就要发布,再过几个月新版iPhone8也即将上线,你真的会用你的iPhone7了吗?下面我们来介绍几个iPhone7的实用小技巧. 1.输入消息时的光标移动: 有很多新用户在疑惑输 ...

  8. 苹果手机计算机怎样拉到桌面,20个你应该知道的iPhone 7实用小技巧

    本文由那年那个饭桶整理,未经作者授权,请勿转载,感谢您的尊重. 听说iOS11马上就要发布,再过几个月新版iPhone8也即将上线,你真的会用你的iPhone7了吗?下面我们来介绍几个iPhone7的 ...

  9. phpstudy mysql建表_MySQL_总结MySQL建表、查询优化的一些实用小技巧,MySQL建表阶段是非常重要的一 - phpStudy...

    总结MySQL建表.查询优化的一些实用小技巧 MySQL建表阶段是非常重要的一个环节,表结构的好坏.优劣直接影响着后续的管理维护,赶在明天上班前分享总结个人MySQL建表.MySQL查询优化积累的一些 ...

最新文章

  1. Grid平均分布自动换行
  2. 网络暴力信号:你家的青少年是受害者或加害者吗?
  3. php输出0到5之间到数,php如何实现输出链表倒数第k个结点(代码实例)
  4. 数理统计-5.4 三大抽样分布
  5. html5中底部对齐怎么写,如何将页脚(div)与页面底部对齐?
  6. JavaScript实现的水珠动画效果
  7. [html] http中的301、302、307、308有什么区别?
  8. 原 BinaryWriter和BinaryReader(二进制文件的读写)
  9. mybatis(数据库增删改查)
  10. 阿里云轻量级服务器上JDK及tomcat部署配置
  11. Python控制语句执行流程
  12. 5G 协议 标准 下载
  13. 常用关系型数据库管理系统
  14. java集合面试题总结
  15. 什么是客户端与服务器端
  16. java我的世界填充方块,我的世界怎么快速填充方块-快速填充方块攻略
  17. opengl 着色器
  18. android新闻客户端的实现
  19. 一文带你读懂,这三个交换机层级的区别和联系。
  20. 统一监控报警平台的架构设计思路分享

热门文章

  1. Linux压缩命令总结
  2. 10款最好的免费在线工具进行网站设计与开发
  3. POJ 1597 Function Run Fun
  4. Zabbix监控web项目
  5. ambari初始化登陆账号/密码假如不是admin/admin
  6. ssh整合问题总结--使用struts2+Ajax+jquery验证用户名是否已被注册
  7. 棋盘分割(记忆化搜索)
  8. 如何在公共WiFi下保持安全?
  9. HDU 3058 Generator [AC自动机+期望DP]
  10. 新到DELL M1000e 刀片服务器