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();    
  }  
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值