log4j子类怎么调用父类中定义的logger

发布时间:2019-09-04编辑:脚本学堂
有关log4j日志组件中子类调用父类中logger的方法,采用一种简洁的方法来调用父类中的方法,有研究log4j的朋友不妨参考下。

在(log4j)类的声明中,声明一个logger:
 

private static final logger logger=logger.getlogger(myclass.class);

然后,再用这个logger来打印信息。

这种方法在类比较少的情况下,非常好用。

不过在类大量增加时,这种方法并不是一个好的方法,它使工程看上去臃肿不堪,于是必须采用一种简洁的方法来替换它。

首先,定义一个父类,让logger作为其的一个成员变量,类型可以为protected或default;
其次在父类的构造函数里初始化该logger:
 

logger=logger.getlogger(getclass().getname());

使用这种方法,其子类就可以直接引用父类中定义的logger来记录信息。

此外,使用getclass().getname(),可以成功将logger命名为子类的名称,同样能够丰富调试信息,帮助定位问题所在。

代码:
 

复制代码 代码示例:

//父类
public abstract class parent {
protected logger logger =null ;
public parent(){
logger=logger.getlogger(getclass().getname());
}
}

//子类
public class son extends parent {
public void test(){
logger.info("successful!");
}
public static void main(string[] args) {
(new son()).test();
}
}