通过url来设置log4j的记录级别
生活随笔
收集整理的這篇文章主要介紹了
通过url来设置log4j的记录级别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
直接看代碼。
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<>();@PostConstructpublic void init() {loadLog4j();}private void loadLog4j() {Enumeration<?> loggers = LogManager.getLoggerRepository().getCurrentLoggers();//獲取所有l(wèi)oggerwhile (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相關(guān)的appenderwhile (allAppenders.hasMoreElements()) {Object apd = allAppenders.nextElement();if (apd instanceof AppenderSkeleton) {AppenderSkeleton appender = (AppenderSkeleton) apd;log4jAppenders.put(appender.getName(), appender);}}}}}@RequestMapping(value = "/setLoggerLevel")@ResponseBodypublic 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 "沒有相應(yīng)的logger[" + logName + "]存在";}if (level == null) {return "沒有相應(yīng)的日志級別[" + levelStr + "]存在";}log4j.setLevel(level);return "將日志logger[" + logName + "]設(shè)置為" + level.toString() + "模式";}@RequestMapping(value = "/setAppenderLevel")@ResponseBodypublic 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 "沒有相應(yīng)的appender[" + appenderName + "]存在";}if (level == null) {return "沒有相應(yīng)的日志級別[" + levelStr + "]存在";}appender.setThreshold(level);return "將日志appender[" + appenderName + "]設(shè)置為" + level.toString() + "模式";} }?
轉(zhuǎn)載于:https://my.oschina.net/linchuhao23/blog/2248901
總結(jié)
以上是生活随笔為你收集整理的通过url来设置log4j的记录级别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux -sed
- 下一篇: ExecutorService——shu