使用的日志记录器数量

7

我正在开发一个使用log4j的大型Java应用程序,想知道在运行时是否有一种方法可以提取活动记录器的数量?或者如何查看应用程序中已经存在的记录器? 我的最终目标是获取所有记录器的列表,并在运行时更改它们的级别。 谢谢。

3个回答

6
您可以尝试类似以下的方法:
Enumeration allLoggers = Logger.getRootLogger()
.getLoggerRepository()
.getCurrentLoggers();

然后迭代所有的日志记录器。


你为什么要两次执行.getRootLogger().getLoggerRepository() - unholysampler
你是不是在两次调用 getRootLogger().getLoggerRepository() - John B

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);

0
或者您可以直接使用LogManager.getCurrentLoggers()返回一个Logger Enumeration。遍历它并通过setLevel()设置Logger的级别。
for (Enumeration<Logger> loggerEnumeratin = LogManager.getCurrentLoggers() ;loggerEnumeratin.hasMoreElements() ;){
            Logger logger = loggerEnumeratin.nextElement();
            logger.setLevel(Level.ERROR);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接