SpringBoot项目利用actuator在运行时动态调整日志的级别

SpringBoot项目在运行时动态调整日志的级别,实现打印debug日志实现问题定位

在生产环境下,我们为了节约日志文件的存储资源和提高日志检索的性能,不得不只打印一些关键的日志。比如只会打印ERROR或WARN级别日志。

但如果程序出现问题时我们需要快速定位,这个时候就需要通过动态调整日志级别来完成。

这时就需要引用Spring Boot中四大核心之一的spring-boot-starter-actuator依赖,他提供了一系列用于监控和管理 Spring Boot 应用程序的端点。

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

添加对应的配置,开启日志端点配置,

management:
  endpoints:
    web:
      exposure:
        # 默认值访问health,info端点 日志级别控制需要使用/loggers端点, 用*可以包含全部端点
        include: "*"
      # 修改访问路径 2.0之前默认是/; 2.0默认是/actuator可以通过这个属性值修改
      base-path: /actuator
  endpoint:
    shutdown:
      enabled: true #打开shutdown端点
    health:
      show-details: always #获得健康检查中所有指标的详细信息
  # actuator端口 如果不配置做默认使用上面8080端口
  server:
    port: 10000
编写测试日志级别类

Controller

package com.pzb.auth.controller;

import com.pzb.auth.service.TestService;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <p> 测试日志级别Controller </p>
 * <p> 创建于 2024/10/26 20:42 </p>
 *
 * @author <a href="mailto:987080702@qq.com">pengzhangbin</a>
 * @version v1.0
 * @since 1.0.0
 */
@RestController
@RequestMapping("/test")
@AllArgsConstructor
public class TestController {

    private final TestService testService;

    /**
     * 测试日志级别
     */
    @GetMapping("/log/level")
    public void testLogLevel() {
        testService.testLogLevel();
    }
}

Service

package com.pzb.auth.service;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * <p> 动态调整日志级别测试 </p>
 * <p> 创建于 2024/10/26 20:38 </p>
 *
 * @author <a href="mailto:987080702@qq.com">pengzhangbin</a>
 * @version v1.0
 * @since 1.0.0
 */
@Slf4j
@Service
public class TestService {
    /**
     * 测试日志级别
     */
    public void testLogLevel() {
        log.info("info test");
        log.error("error test");
        log.warn("warn test");
        log.debug("debug test");
        log.trace("trace test");
    }
}

启动服务访问http://localhost:8080/test/log/level 结果如下:
在这里插入图片描述

默认的级别为INFO,所以会打印INFO,以及比INFO高的WARN和ERROR的日志

查看默认某个包或类的日志级别

GET请求没有body http://127.0.0.1:10000/actuator/loggers/{packageOrClass},可以看到是INFO级别
在这里插入图片描述

修改某个包或类的日志级别

http://127.0.0.1:10000/actuator/loggers/{packageOrClass}POST请求
BODY

{
	// 配置日志级别为DEBUG,
	// slf4j中日志级别由高到低为: ERROR、WARN、INFO、DEBUG、TRACE
    "configuredLevel": "DEBUG"
}

在这里插入图片描述
现在查看默认某个包或类的日志级别可以看到日志级别变成了DEBUG

{
    "configuredLevel": "DEBUG",
    "effectiveLevel": "DEBUG"
}

现在调用可以看到效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值