前言
项目使用了springboot构建项目。下面对动态调整 日志 的 级别 进行记录。
从版本 1.5.1 之后就提供了基于 spring-boot-starter-actuator 的端点 /loggers。通过该端点可以实现查看系统的 package-path 的日志级别,以及针对特定的 package-path 配置运行中的应用的日志级别的功能。
actuator 依赖
pom 依赖
因为是基于 web 的项目和利用 actuator 提供的端点来进行配置,因此需要依赖:
1 2 3 4 5 6 7 8 9 |
<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。为了方便首先配置不需要安全权限的。
1 |
management.security.enabled= false |
get 请求访问
我们可以发送get 请求到 http://localhost:8091/loggers 来获取支持的日志等级,以及系统(root)默认的日志等和各个包路径( com.mall.goods.zhongkui 等)对应的日志级别。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
{ levels: [ "off" , "fatal" , "error" , "warn" , "info" , "debug" , "trace" ], loggers: { root: { configuredlevel: "info" , effectivelevel: "info" }, com.mall.goods.zhongkui: { configuredlevel: "debug" , effectivelevel: "debug" }, com.mall.goods.zhongkui.mallcpswomai.mapper: { configuredlevel: "debug" , effectivelevel: "debug" } } } |
配置日志级别
编写日志输出类
编写一个controller 输出各个级别的日志:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
@slf4j @controller public class testcontroller {
@getmapping (value = "/testlog" ) public string testlog() { log.info( "---------------------------" ); log.debug( "debug debug" ); log.info( "info info info" ); log.warn( "warn warn warn" ); log.error( "error error error " ); log.info( "---------------------------" ); return "ok" ; } } |
查看日志级别
启动应用访问 http://localhost:8091/ 得到:
[2018-07-30 18:05:42.868] [http-nio-8091-exec-2] info com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller----------------------------
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] debug com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-debug debug
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] info com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-info info info
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] warn com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-warn warn warn
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] error com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller-error error error
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] info com.mall.goods.zhongkui.mallcpswomai.web.orderrelationcontroller----------------------------
spring boot 默认的 root 日志级别是info。
配置特定包的日志级别
通过 /loggers 端点提供的 post 请求,修改包路径 com.mall.goods.zhongkui 的日志级别为info。
* 发送post 请求到 http://localhost:8091/com.mall.goods.zhongkui,其中请求 body 的内容如下:
1 2 3 |
{ "configuredlevel" : "info" } |
•get 访问 /loggers/com.mall.goods.zhongkui 查看当前的日志级别:
1 2 3 4 |
{ configuredlevel: "info" , effectivelevel: "info" } |
•再次访问 http://localhost:8091/ 得到:需要注意的是,通过 /loggers 配置的日志级别在应用重启时会恢复到系统的配置。如果想永久的配置日志的级别还是需要通过 logging.level.package-path 来进行配置。
总结
spring boot 提供的日志级别 动态配置 功能,为我们的线上应用调试提供了很好的机制。在实际使用中需要结合 spring-security 提供的安全机制来保护actuator 提供的各种系统级端点。
参考
1. configure a logger
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
原文链接:https://blog.csdn.net/u014684364/article/details/81289696
查看更多关于动态配置Spring Boot日志级别的全步骤的详细内容...