Получить LogLevel для текущего класса / компонента - PullRequest
1 голос
/ 07 декабря 2010

Я использую следующий подход при входе из моего класса:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;    
...
private static Log log = LogFactory.getLog(MyClass.class);
...
log.debug("...");

До меня дошло, что все операторы журнала всегда выполняются независимо от того, какой уровень журнала применяется. Я не хочу, чтобы операторы, связанные с отладкой, выполнялись, когда они мне не нужны (здесь проблема производительности)

Итак, я ищу что-то вроде этого:

if (LogLevel == debug) {
   log.debug("...");
   ...
}

Как я могу получить текущий LogLevel, используемый для этого класса?

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Каждый экземпляр журнала в пакете регистрации общего доступа может сообщать вам, включен ли определенный уровень. Используйте этот код:

if ( log.isDebugEnabled() ) 
{
    // Debug log statements
}

Проверьте Commons Logging JavaDoc для получения дополнительной информации.

3 голосов
/ 07 декабря 2010

Используйте slf4j как фасад ведения журнала для вашей среды ведения журнала, поскольку он решает проблему, которую вы упомянули, используя параметризованное ведение журнала для повышения производительности.

Если вы хотите еще более быстрый каркас регистрации, используйте Logback .

...