动态配置Spring Boot日志级别的全步骤

 更新时间:2019年04月16日 10:49:59   作者:细品热咖啡  
这篇文章主要给大家介绍了关于动态配置Spring Boot日志级别的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

项目使用了SpringBoot构建项目。下面对动态调整日志的级别进行记录。

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

Actuator 依赖

pom 依赖

因为是基于 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: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
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 的内容如下:

{
 "configuredLevel": "INFO"
}

•GET 访问 /loggers/com.mall.goods.zhongkui 查看当前的日志级别:

{
 configuredLevel: "INFO",
 effectiveLevel: "INFO"
}

•再次访问 http://localhost:8091/ 得到:需要注意的是,通过 /loggers 配置的日志级别在应用重启时会恢复到系统的配置。如果想永久的配置日志的级别还是需要通过logging.level.package-path 来进行配置。

总结

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

参考

1.Configure a Logger

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤

    Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤

    这篇文章主要介绍了Idea+maven搭建SSH(struts2+hibernate5+spring5)环境的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 一篇文章带你入门java多线程

    一篇文章带你入门java多线程

    这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下
    2021-08-08
  • Java基于反射机制实现全部注解获取的方法示例

    Java基于反射机制实现全部注解获取的方法示例

    这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Java设计模式之抽象工厂模式实例详解

    Java设计模式之抽象工厂模式实例详解

    这篇文章主要介绍了Java设计模式之抽象工厂模式,结合实例形式分析了抽象工厂模式的概念、功能、定义与使用方法,需要的朋友可以参考下
    2017-09-09
  • 一文了解自定义MVC框架实现

    一文了解自定义MVC框架实现

    这篇文章主要为大家详细介绍一下MVC框架自定义实现过程,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-07-07
  • Java利用Picocli开发一个简化命令行工具

    Java利用Picocli开发一个简化命令行工具

    Picocli 是一个强大、易用且功能丰富的 Java 库,用于开发命令行工具,本文我们就来为大家介绍一下Java如何利用Picocli进行命令行简化功能的吧
    2025-03-03
  • Spring Boot如何获取maven打包时间

    Spring Boot如何获取maven打包时间

    这篇文章主要介绍了Spring Boot如何获取maven打包时间,首先引入maven打包插件,本文分步骤给大家介绍的非常详细,需要的朋友参考下吧
    2024-03-03
  • JDBC 实现通用的增删改查基础类方法

    JDBC 实现通用的增删改查基础类方法

    下面小编就为大家分享一篇JDBC 实现通用的增删改查基础类方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • SpringBoot手写自定义starter源码

    SpringBoot手写自定义starter源码

    这篇文章主要介绍了SpringBoot手写自定义starter源码,SpringBoot拥有很多方便使用的starter,比如spring-boot-starter-log4j、mybatis-spring-boot-starter.jar等,各自都代表了一个相对完整的功能模块,需要的朋友可以参考下
    2023-10-10
  • 解读RedisTemplate的各种操作(set、hash、list、string)

    解读RedisTemplate的各种操作(set、hash、list、string)

    这篇文章主要介绍了解读RedisTemplate的各种操作(set、hash、list、string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论