2011-03-07 47 views
1

我目前正在努力使用log4j進行日誌記錄。我創建了一個XML配置文件,併成功登錄我的主類:Log4j只在主類中登錄。我做錯了什麼?

的log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="LogAppender" class="org.apache.log4j.FileAppender"> 
    <param name="file" value="logs/somelogfile.log" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d [%t] %p - %m%n" /> 
    </layout> 
    </appender> 

    <root> 
    <priority value="ERROR" /> 
    <appender-ref ref="LogAppender" /> 
    </root> 

</log4j:configuration> 

我的主類:

public class Main { 

    static Logger logger = Logger.getLogger(Main.class); 
    /** 
    * @param args 
    */ 

    public static void main(String[] args) { 
      // TODO Auto-generated method stub 
     DOMConfigurator.configure("config/log4j.xml"); 

     logger.error("Hi"); 
    } 

} 

不幸的是,在其他班級日誌(在另一個包)不工作。無論我是否調用DOMConfigurator,都沒有記錄。我在這裏錯過了什麼?

對不起,我轉儲:

EDIT(記錄器總是與Logger.getLogger(Classname.class)創建的)!它正在工作。剛剛認識到,我在其他班級中發現了一個錯誤的例外,因此記錄器從未被調用過。

+0

只需確認...您是否在DomConfigurator類中創建了一個記錄器?那裏使用的日誌記錄級別是什麼? – 2011-03-07 19:33:12

+0

我沒有做任何事情,除了寫我的問題中顯示的代碼。 – 2011-03-07 19:44:36

+0

我在代碼中看不到任何問題。看着你的配置文件,它可能是配置爲ERROR的記錄器級別。所以INFO和DEBUG語句可能不會被記錄。 嘗試將記錄器級別更改爲DEBUG以獲取所有INFO,DEBUG,ERROR級別 – kadalamittai 2011-03-07 19:47:34

回答

1

您需要在log4j.xml文件中配置記錄器以指向appender。這裏是一個例子:

<logger name="com.mycompany.apackage.MyClass"> 
    <level value="info"/> 
    <appender-ref ref="appender-name-here" /> 
</logger>

此外,你的根記錄器將只允許錯誤級別的日誌記錄(優先值=「錯誤」)。