不灭的焱

革命尚未成功,同志仍须努力 下载Go 下载Java

作者:AlbertWen  添加时间:2026-01-23 12:27:26  修改时间:2026-01-23 23:33:57  分类:07.Java框架/系统  编辑

在 Spring Boot 中动态修改 Logback 日志级别(无需重启应用),可通过 Spring Boot Actuator 端点 或 编程式 API 实现,核心是利用 Logback 自身的日志级别管理能力。以下是两种常用方案:

一、方案 1:通过 Spring Boot Actuator(推荐,无代码侵入)

Spring Boot Actuator 提供了 loggers 端点,可直接查询和修改日志级别,适合生产环境快速调整。

步骤 1:添加 Actuator 依赖

在 pom.xml 中添加依赖(确保已引入 Logback,Spring Boot 默认集成):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

步骤 2:配置 Actuator 暴露 loggers 端点

在 application.yml 中开启 loggers 端点(默认仅暴露 healthinfo):

management:
  endpoints:
    web:
      exposure:
        include: loggers  # 暴露 loggers 端点(可添加其他端点,如 health, info)
  endpoint:
    loggers:
      enabled: true  # 启用 loggers 端点(默认已启用)

步骤 3:动态修改日志级别

通过 HTTP 请求调用 loggers 端点修改级别,支持 全局级别 或 指定包 / 类级别

(1)查询当前日志级别

  • 查看全局日志级别:

    curl http://localhost:8080/actuator/loggers/ROOT
    

    响应示例(level 为当前级别):

    {
      "configuredLevel": "INFO",
      "effectiveLevel": "INFO"
    }
    
  • 查看指定包 / 类的日志级别(如 com.example.controller):

    curl http://localhost:8080/actuator/loggers/com.example.controller
    

(2)修改日志级别

发送 POST 请求,通过 JSON 体指定目标级别(支持 TRACEDEBUGINFOWARNERROROFF)。

  • 修改全局级别(ROOT Logger):

    curl -X POST http://localhost:8080/actuator/loggers/ROOT \
    -H "Content-Type: application/json" \
    -d '{"configuredLevel": "DEBUG"}'
  • 修改指定包级别(如 com.example.service):
    curl -X POST http://localhost:8080/actuator/loggers/com.example.service \
    -H "Content-Type: application/json" \
    -d '{"configuredLevel": "DEBUG"}'
  • 修改指定类级别(如 com.example.controller.UserController):
    curl -X POST http://localhost:8080/actuator/loggers/com.example.controller.UserController \
    -H "Content-Type: application/json" \
    -d '{"configuredLevel": "TRACE"}'
  • 重置级别(恢复为继承的上级级别):
    curl -X POST http://localhost:8080/actuator/loggers/com.example.service \
    -H "Content-Type: application/json" \
    -d '{"configuredLevel": null}'