通过url来设置log4j的记录级别
直接看代码。
import org.apache.log4j.AppenderSkeleton; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; @Controller @RequestMapping(value = "/log4j") public class Log4jController { private Map<String, Logger> log4jLoggers = new HashMap<>(); private Map<String, AppenderSkeleton> log4jAppenders = new HashMap<>(); @PostConstruct public void init() { loadLog4j(); } private void loadLog4j() { Enumeration<?> loggers = LogManager.getLoggerRepository().getCurrentLoggers();//获取所有logger while (loggers.hasMoreElements()) { Object elem = loggers.nextElement(); if (elem instanceof org.apache.log4j.Logger) { org.apache.log4j.Logger log4j = (org.apache.log4j.Logger) elem; log4jLoggers.put(log4j.getName(), log4j); Enumeration<?> allAppenders = log4j.getAllAppenders();//获取logger相关的appender while (allAppenders.hasMoreElements()) { Object apd = allAppenders.nextElement(); if (apd instanceof AppenderSkeleton) { AppenderSkeleton appender = (AppenderSkeleton) apd; log4jAppenders.put(appender.getName(), appender); } } } } } @RequestMapping(value = "/setLoggerLevel") @ResponseBody public String setLoggerLevel(HttpServletRequest request) { String logName = request.getParameter("name"); String levelStr = request.getParameter("level"); Level level = Level.toLevel(levelStr, null); org.apache.log4j.Logger log4j = log4jLoggers.get(logName); if (log4j == null) { return "没有相应的logger[" + logName + "]存在"; } if (level == null) { return "没有相应的日志级别[" + levelStr + "]存在"; } log4j.setLevel(level); return "将日志logger[" + logName + "]设置为" + level.toString() + "模式"; } @RequestMapping(value = "/setAppenderLevel") @ResponseBody public String setAppenderLevel(HttpServletRequest request) { String appenderName = request.getParameter("name"); String levelStr = request.getParameter("level"); Level level = Level.toLevel(levelStr, null); Response response = new Response(); AppenderSkeleton appender = log4jAppenders.get(appenderName); if (appender == null) { return "没有相应的appender[" + appenderName + "]存在"; } if (level == null) { return "没有相应的日志级别[" + levelStr + "]存在"; } appender.setThreshold(level); return "将日志appender[" + appenderName + "]设置为" + level.toString() + "模式"; } }
年轻女营养学家
相关推荐
大唐帝国前营 2020-08-18
MrLiar 2020-07-07
丨Fanny丨Cri 2020-06-13
chw0 2020-11-04
sdaq 2020-07-26
sdaq 2020-06-16
CXC0 2020-06-14
CXC0 2020-06-08
dongxurr 2020-06-07
sdaq 2020-06-06
MrLiar 2020-06-04
丨Fanny丨Cri 2020-06-03
MrLiar 2020-05-25
丨Fanny丨Cri 2020-05-17
MrLiar 2020-05-14
MrLiar 2020-05-12
sdaq 2020-05-11