[日志系统/Log4j2] 基于Log4j2实现动态调整日志级别

概述

最佳实践

LoggingUtils#setLoggerLevel()


import org.apache.logging.log4j.Level; //org.apache.logging.log4j:log4j-api:2.20.0
import org.apache.logging.log4j.LogManager; //org.apache.logging.log4j:log4j-api:2.20.0
import org.apache.logging.log4j.core.LoggerContext; //org.apache.logging.log4j:log4j-core:2.20.0
import org.apache.logging.log4j.core.config.Configurator; //org.apache.logging.log4j:log4j-core:2.20.0
import org.slf4j.Logger; //org.slf4j:slf4j-api:1.7.25
import org.slf4j.LoggerFactory; //org.slf4j:slf4j-api:1.7.25

/**
 * 日志处理工具
 * @updateTime 2025.8.15 14:38
 */
public class LoggingUtils {
    private final static Logger log = LoggerFactory.getLogger(LoggingUtils.class);

    public final static String UPDATE_LOGGER_CLASS_PARAM = "sdk.log.updateLogger.class";
    public final static String UPDATE_LOGGER_LEVEL_DEFAULT = "INFO";
    public final static String UPDATE_LOGGER_LEVEL_PARAM = "sdk.log.updateLogger.level";

    /**
     * 调整日志级别
     */
    public static void setLoggerLevel(String targetClassCanonicalName, String loggerLevelConfig){
        log.info("targetClassCanonicalName:{},loggerLevel:{}", targetClassCanonicalName, loggerLevelConfig);
        //LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
        Level loggerLevel = Level.getLevel(loggerLevelConfig);

        if(targetClassCanonicalName == null){
            Configurator.setRootLevel(loggerLevel);
        } else {
            // org.apache.logging.log4j.core.config.Configurator;
            Configurator.setLevel(targetClassCanonicalName, loggerLevel);
        }
    }

    public static void setLoggerLevel(){
        String targetClassCanonicalName = System.getProperty(UPDATE_LOGGER_CLASS_PARAM); // -Dsdk.log.updateLogger.class=com.xxx.sdk.java.messageparse.XxxParseService
        String loggerLevelConfig = System.getProperty(UPDATE_LOGGER_LEVEL_PARAM, UPDATE_LOGGER_LEVEL_DEFAULT);//-Dsdk.log.updateLogger.level=DEBUG
        setLoggerLevel(targetClassCanonicalName, loggerLevelConfig);
    }
}

X 参考文献

posted @ 2025-08-15 14:47  千千寰宇  阅读(34)  评论(0)    收藏  举报