Java Log4j在基类中创建日志实例
假设层次结构中的所有类都只有默认构造函数,那么下面创建日志实例的问题是什么Java Log4j在基类中创建日志实例,java,logging,log4j,Java,Logging,Log4j,假设层次结构中的所有类都只有默认构造函数,那么下面创建日志实例的问题是什么 public abstract class AbstractService { protected static Log log=null; public AbstractService(){ log=LogFactory.getLog(this.getClass().getName()); } public void foo(){
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()对其进行命名),或者
- 在声明中初始化它,例如受保护的静态日志Log=LogFactory.getLog(AbstractClass.class)李>
- 使“log”字段非静态(可能是您想要的,因为您使用getClass().getName()对其进行命名),或者
- 在声明中初始化它,例如受保护的静态日志Log=LogFactory.getLog(AbstractClass.class)李>