Log4j: Как отфильтровать сообщения определенного класса?

Я хочу настроить ведение журнала log4j, чтобы не регистрировать сообщения, которые 1) исходят от определенного класса и 2) имеют определенную серьезность, т. е. WARN.

Может ли кто-нибудь предоставить пример конфигурации/кода о том, как это сделать?


person BestPractices    schedule 18.03.2010    source источник


Ответы (1)


Приведенная ниже информация решает проблему для стандартного пакета java.util.logging:

Для классов фильтрации вы должны реализовать Filter интерфейс и используйте его, вызвав setFilter класса Logger:

public class ClassFilter implements Filter {
  public boolean isLoggable(LogRecord lr) {
    return (lr.getSourceClassName() == "SpecificClassName");
  }
}
...
Logger l = Logger.getLogger("mypackage.log");
l.setFilter(new ClassFilter());

Для фильтрации серьезности используйте метод setLevel() класса Logger.

person Dmitry    schedule 18.03.2010
comment
Извините, я был невнимателен, в этом примере используется стандартный пакет java.util.logging, а не log4j. Может быть, вы решите перейти на него с log4j :) - person Dmitry; 19.03.2010