博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot实用小技巧之动态设置SpringBoot日志级别
阅读量:5968 次
发布时间:2019-06-19

本文共 1558 字,大约阅读时间需要 5 分钟。

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

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

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

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

先引入Actuator依赖

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

org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator

安全配置

  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

你可能感兴趣的文章
Delphi天气预报查询
查看>>
WCF 安全性 之 None
查看>>
注入理解之挂起线程
查看>>
年终感想——财务自由的程序员,你见过吗?
查看>>
【海洋女神原创】Installshield脚本拷贝文件常见问题汇总
查看>>
启用了不安全的 HTTP 方法
查看>>
UVa 1592 数据库
查看>>
Windows Azure 革新 – TFS集成(WAWS第2部分)
查看>>
软件设计模式之单例模式
查看>>
BZOJ 4154 kd-tree dfs序 + 二维空间的区间(矩阵)更新单点查找
查看>>
每天一道博弈论之“巴什博弈”
查看>>
[Android]ListView中分割线的设置
查看>>
Java ---学习笔记(泛型)
查看>>
ubantu 单用户模式进入系统
查看>>
10 个实用技巧,让 Finder 带你飞
查看>>
阿里云ECS利用密钥对ssh登录服务器
查看>>
Eclipse Web开发出现莫名其妙错误
查看>>
solutions for 'No Suitable Driver Found For Jdbc'
查看>>
C语言中字符串的处理方式
查看>>
全美电影票房排行(截止2010.12.19)
查看>>