我正在开发一个使用log4j的大型Java应用程序,想知道在运行时是否有一种方法可以提取活动记录器的数量?或者如何查看应用程序中已经存在的记录器? 我的最终目标是获取所有记录器的列表,并在运行时更改它们的级别。 谢谢。
Enumeration allLoggers = Logger.getRootLogger()
.getLoggerRepository()
.getCurrentLoggers();
然后迭代所有的日志记录器。
要获取记录器,请使用以下之一
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);
LogManager.getCurrentLoggers()
返回一个Logger Enumeration
。遍历它并通过setLevel()设置Logger
的级别。for (Enumeration<Logger> loggerEnumeratin = LogManager.getCurrentLoggers() ;loggerEnumeratin.hasMoreElements() ;){
Logger logger = loggerEnumeratin.nextElement();
logger.setLevel(Level.ERROR);
}
.getRootLogger().getLoggerRepository()
? - unholysamplergetRootLogger().getLoggerRepository()
? - John B