gpt4 book ai didi

java - Log4j 在基类中创建日志实例

转载 作者:行者123 更新时间:2023-12-02 00:09:30 25 4
gpt4 key购买 nike

假设我的层次结构中的所有类都只有默认构造函数,那么创建 Log 实例如下有什么问题?

 public abstract class AbstractService {


protected static Log log=null;


public AbstractService(){
log=LogFactory.getLog(this.getClass().getName());
}

public void foo(){
log.debug("base foo() : ");
}

}


class ServiceA extends AbstractService {

public void foo(){
super.foo();

log.debug("Overloaded foo() in ServiceA");
}
}


class ServiceB extends AbstractService {
public void foo(){
super.foo();
log.debug("Overloaded foo() in ServiceB");

}
}

最佳答案

鉴于“log”字段是静态的(即与 AbstractService 类关联),因此不应从构造函数中设置它(与该类的特定实例关联)。

您需要:

  • 使“log”字段成为非静态(可能是您想要的,因为您使用 getClass().getName() 命名它),或者
  • 在其声明中对其进行初始化,例如protected static Log log=LogFactory.getLog(AbstractClass.class);

关于java - Log4j 在基类中创建日志实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com