使用的记录器数量

时间:2011-11-17 15:18:56

标签: java log4j logging

我正在使用log4j处理一个非常大的java应用程序,我想知道是否有办法在运行时提取活动记录器的数量?或者应用程序中现有的记录器是什么? 我的最终目标是获取所有记录器的列表并在运行时更改其级别。 谢谢。

3 个答案:

答案 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);
}