一尘不染

来自log4j.Logger的getLogger的通用方法

java

而不是在每个类上指定类名:

log = Logger.getLogger(Foo.class);
log = Logger.getLogger(Bar.class);
log = Logger.getLogger(Test.class);

可以使用吗:

log = Logger.getLogger(this.getClass());

这将意味着什么?


阅读 267

收藏
2020-12-03

共1个答案

一尘不染

如果创建子类,则日志消息将记录到子类的记录器中。

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();

在上面的示例中,“正在执行操作”将被记录到pkgtwo.SubType记录器而不是pkgone.SuperType记录器,这可能是您想要的,也可能不是。

2020-12-03