动态配置Spring Boot日志级别的全步骤
前言
项目使用了SpringBoot构建项目。下面对动态调整日志的级别进行记录。
从版本1.5.1之后就提供了基于spring-boot-starter-actuator的端点/loggers。通过该端点可以实现查看系统的package-path的日志级别,以及针对特定的package-path配置运行中的应用的日志级别的功能。
Actuator依赖
pom依赖
因为是基于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:8091/loggers来获取支持的日志等级,以及系统(ROOT)默认的日志等和各个包路径(com.mall.goods.zhongkui等)对应的日志级别。
{ 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输出各个级别的日志:
@Slf4j @Controller publicclassTestController{ @GetMapping(value="/testLog") publicStringtestLog(){ log.info("---------------------------"); log.debug("debugdebug"); log.info("infoinfoinfo"); log.warn("warnwarnwarn"); log.error("errorerrorerror"); log.info("---------------------------"); return"ok"; } }
查看日志级别
启动应用访问http://localhost:8091/得到:
[2018-07-3018:05:42.868][http-nio-8091-exec-2]INFO com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController----------------------------
[2018-07-3018:05:42.869][http-nio-8091-exec-2]DEBUGcom.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-debugdebug
[2018-07-3018:05:42.869][http-nio-8091-exec-2]INFO com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-infoinfoinfo
[2018-07-3018:05:42.869][http-nio-8091-exec-2]WARN com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-warnwarnwarn
[2018-07-3018:05:42.869][http-nio-8091-exec-2]ERRORcom.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-errorerrorerror
[2018-07-3018:05:42.869][http-nio-8091-exec-2]INFO com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController----------------------------
SpringBoot默认的ROOT日志级别是INFO。
配置特定包的日志级别
通过/loggers端点提供的POST请求,修改包路径com.mall.goods.zhongkui的日志级别为INFO。
*发送POST请求到 http://localhost:8091/com.mall.goods.zhongkui,其中请求Body的内容如下:
{ "configuredLevel":"INFO" }
•GET访问/loggers/com.mall.goods.zhongkui查看当前的日志级别:
{ configuredLevel:"INFO", effectiveLevel:"INFO" }
•再次访问http://localhost:8091/得到:需要注意的是,通过/loggers配置的日志级别在应用重启时会恢复到系统的配置。如果想永久的配置日志的级别还是需要通过logging.level.package-path来进行配置。
总结
SpringBoot提供的日志级别动态配置功能,为我们的线上应用调试提供了很好的机制。在实际使用中需要结合Spring-Security提供的安全机制来保护Actuator提供的各种系统级端点。
参考
1.ConfigureaLogger
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。