Как правильно инициализировать регистратор slf4j (с использованием log4j) в абстрактных классах / для наследования

В моем проекте у меня есть абстрактный класс верхнего уровня FrameProducer . Я добавил регистратор slf4j на этом уровне, чтобы он уже был у каждого наследующего класса. Вот код:

public abstract class FrameProducer extends Observable {

    protected final Logger logger = LoggerFactory.getLogger(this.getClass());

    protected BufferedImage frame;

    public BufferedImage getFrame() {
        return frame;
    }

    public void fireEvent() {
        logger.debug("Firing event. Implementing class: {}", this.getClass());
        setChanged();
        notifyObservers();
    }
}

Есть также два наследующих класса: CameraFrameGrabber и GrayscaleFilter . Все же, когда метод fireEvent () вызывается из CameraFrameGrabber или GrayscaleFilter , сообщение регистрируется на уровне FrameProducer . Вот журнал, для ясности:

FrameProducer.fireEvent - Firing event. Implementing class: class com.ofj.frameaccess.CameraFrameGrabber
FrameProducer.fireEvent - Firing event. Implementing class: class com.ofj.frameaccess.GrayscaleFilter

Можно ли инициализировать регистратор в FrameProducer таким образом, чтобы все регистрировалось на наиболее специализированном уровне в моей иерархии классов?

Спасибо за любую помощь. .


Изменить: Мой log4j.properties выглядит так:

log4j.rootCategory=TRACE, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%C{1}.%M - %m%n
8
задан mmm 12 October 2010 в 11:57
поделиться