Количество используемых регистраторов - PullRequest
7 голосов
/ 17 ноября 2011

Я работаю над очень большим Java-приложением с log4j, и мне было интересно, есть ли способ извлечь во время выполнения количество активных регистраторов? Или каковы существующие регистраторы в приложении? Моя конечная цель - получить список всех регистраторов и изменить их уровень во время выполнения. Спасибо.

Ответы [ 3 ]

6 голосов
/ 17 ноября 2011

Вы можете попробовать что-то вроде:

Enumeration allLoggers = Logger.getRootLogger()
.getLoggerRepository()
.getCurrentLoggers();

Затем переберите все журналы.

0 голосов
/ 17 ноября 2011

Или вы можете просто использовать LogManager.getCurrentLoggers(), чтобы вернуть Logger Enumeration. Проходить через него и установить уровень Logger с помощью setLevel ()

for (Enumeration<Logger> loggerEnumeratin = LogManager.getCurrentLoggers() ;loggerEnumeratin.hasMoreElements() ;){
            Logger logger = loggerEnumeratin.nextElement();
            logger.setLevel(Level.ERROR);
}
0 голосов
/ 17 ноября 2011

, чтобы получить регистраторы, используйте один из этих

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...