我正在使用log4j处理一个非常大的java应用程序,我想知道是否有办法在运行时提取活动记录器的数量?或者应用程序中现有的记录器是什么? 我的最终目标是获取所有记录器的列表并在运行时更改其级别。 谢谢。
答案 0 :(得分:6)
您可以尝试以下方式:
Enumeration allLoggers = Logger.getRootLogger()
.getLoggerRepository()
.getCurrentLoggers();
然后迭代allLoggers。
答案 1 :(得分:0)
让记录器使用其中一个
Logger rootLogger = LogManager.getRootLogger(); //To get the Root Logger
Enumeration e = LogManager.getCurrentLoggers(); //To get an enumerated list of loggers
rootLogger.getName(); //To get the logger by name
rootLogger.getEffectiveLevel().toString(); //To get the effective level of the current logger
logger.getParent(); //Get the ccurrent loggers' parent
//To set a new level for a particular Logger
Logger logger = Logger.getLogger("TestLogger");
L evel lev = Level.toLevel("DEBUG");
设置使用此:
logger.setLevel(lev);
答案 2 :(得分:0)
或者您只需使用LogManager.getCurrentLoggers()
返回记录器Enumeration
。通过它来点击并设置Logger
的级别为setLevel()
for (Enumeration<Logger> loggerEnumeratin = LogManager.getCurrentLoggers() ;loggerEnumeratin.hasMoreElements() ;){
Logger logger = loggerEnumeratin.nextElement();
logger.setLevel(Level.ERROR);
}