Log4j使用技巧——让子类使用父类中定义的Logger --转载
2010-01-13 20:09
351 查看
关于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();
}
}
在项目中,有时候会遇到这么一种情况,我们需要记录一些类的使用情况,在类的声明中,我们会如此声明一个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();
}
}
相关文章推荐
- Log4j使用技巧——让子类使用父类中定义的Logger --转载
- Log4j使用技巧――让子类使用父类中定义的Logger
- org.apache.log4j.Logger的使用方法--转载自CSDN (2011-06-27 14:05:53)
- org.apache.log4j.Logger的使用方法--转载自CSDN (2011-06-27 14:05:53)
- C语言使用技巧3:C++中子类调用父类重载函数的方法
- 关于如何在不使用虚函数的情况下父类调用子类成员函数的问题
- 子类和父类定义相同的方法和属性的解析:
- C++父类子类间函数重定义,虚函数重写(覆盖)以及重载
- [转载]VI使用技巧
- 父类的正常成员函数子类可以使用,并不是继承下来 的,子类是怎么调用父类的函数 : 可能是利用了一种叫函数名联编的方法.没有隐藏的情况下用函数名字来决定调用的函数.
- 【转载】OFFICE使用技巧FAQ宝典
- Pycharm使用技巧(转载)
- 把子类当成父对象使用(子类赋值给父类)
- (转载)使用Windows的140个技巧(二)
- org.apache.log4j.Logger 使用
- VC++.net 整合开发环境使用技巧【转载】
- (转载)DataTable使用技巧总结
- 前端构建工具gulpjs的使用介绍及技巧【转载】
- Java 使用反射观察子类是否继承了父类的私有方法
- Eclipse使用方法和技巧二十七:定义自己的高速联想词