Generic way of getLogger from log4j.Logger

java, log4j

Solution

If you create a subclass, the log messages will get logged to the subclass's logger.

package pkgone;
public class SuperType {
    private Logger log = Logger.getLogger(this.getClass());
    public void someAction() {
        log.info("Doing something");
    }
}

.

package pkgtwo;
import pkgone.SuperType;
public class SubType extends SuperType {
    // for instances of SubType, the log object in SuperType
    // will get initialized with SubType's class object
}

.

// some code somewhere that uses SubType
SubType obj = new SubType();
obj.someAction();

In the above example, "Doing something" will get logged to the pkgtwo.SubType logger instead of pkgone.SuperType logger, which may or may not be what you want.

Problem

Instead of specifying the class name on each class: ``` log = Logger.getLogger(Foo.class); log = Logger.getLogger(Bar.class); log = Logger.getLogger(Test.class); ``` Will it be OK to use : ``` log = Logger.getLogger(this.getClass()); ``` What will be the implications?

Original source