SpringBoot Logback修改日志级别

  1. 在application.yml 通过配置配置,按住Ctrl + 左键可以看源码
javascript 复制代码
logging:
  level:
    root: info
    com.dj.test.controller: debug
    com.dj.test.service: debug
  1. 自己写接口直接动态修改日志级别,读取application.yml配置文件算是间接修改
java 复制代码
package com.dj.springtest.controller;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.List;

/**
 * Date: 2024/1/13
 * Time: 22:02
 * Description: No Description
 */
@RestController
public class LogController {

    private static final List<String> LEVELS = Arrays.asList("ALL", "all", "TRACE", "trace", "DEBUG", "debug", "INFO", "info", "WARN", "warn", "ERROR", "error", "OFF", "off");

    /**
     * 设置日志界级别
     *
     * @param overall     全局设置
     * @param part        部分设置
     * @param packagePath 涵盖包,如果有多个path,请使用英文逗号分隔
     */
    @GetMapping("/log/level")
    public String setLogLevel(String overall, String part, String packagePath) {
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        if (StringUtils.isNotBlank(overall) && LEVELS.contains(overall)) {
            Logger rootLogger = loggerContext.getLogger("root");
            rootLogger.setLevel(Level.toLevel(overall));
        }

        //根据包路径进行设置
        if (StringUtils.isNotBlank(part) && LEVELS.contains(part) && StringUtils.isNotBlank(packagePath)) {
            String[] paths = packagePath.split(",");
            for (String path : paths) {
                Logger pathLogger = loggerContext.getLogger(path);
                pathLogger.setLevel(Level.toLevel(part));
            }
        }

        return "Succeeded in changing the log level";
    }

}
相关推荐
xcl09258 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐10 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长10 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn10 小时前
Spring 注解使用详解
java·spring
一条小小yu11 小时前
Spring IoC的理解
java·后端·spring
落魄实习生11 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈11 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白13 小时前
核心功能(Service接口)
java·mybatis
乌暮13 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习