關于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();
本文轉自 cuiyingfeng 51CTO部落格,原文連結:http://blog.51cto.com/cuiyingfeng/6625,如需轉載請自行聯系原作者