diff --git a/das/src/main/java/com/das/modules/admin/controller/LoggerController.java b/das/src/main/java/com/das/modules/admin/controller/LoggerController.java new file mode 100644 index 00000000..32edcfa6 --- /dev/null +++ b/das/src/main/java/com/das/modules/admin/controller/LoggerController.java @@ -0,0 +1,51 @@ +package com.das.modules.admin.controller; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.LoggerConfig; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/api/logger/") +public class LoggerController { + private static final Logger logger = LogManager.getLogger(LoggerController.class); + + /** + * 查询当前日志级别 + * + * @return 当前所有日志级别 + */ + @GetMapping("/list") + public Map listLogLevels() { + LoggerContext context = (LoggerContext) LogManager.getContext(false); + return context.getConfiguration().getLoggers().values().stream() + .collect(Collectors.toMap( + LoggerConfig::getName, + loggerConfig -> loggerConfig.getLevel().toString() + )); + } + + /** + * 更新日志级别 + * + * @param loggerName 日志名称 + * @param level 日志级别 (TRACE, DEBUG, INFO, WARN, ERROR, FATAL) + * @return 更新结果 + */ + @PostMapping("/update") + public String updateLogLevel(String loggerName, String level) { + try { + Configurator.setLevel(loggerName, org.apache.logging.log4j.Level.valueOf(level.toUpperCase())); + logger.info("Updated logger [{}] to level [{}]", loggerName, level); + return String.format("Logger [%s] updated to level [%s]", loggerName, level); + } catch (IllegalArgumentException e) { + logger.error("Invalid log level [{}]", level, e); + return String.format("Invalid log level [%s]. Valid levels: TRACE, DEBUG, INFO, WARN, ERROR, FATAL.", level); + } + } +} \ No newline at end of file