2011-06-29 128 views
4

我正在將日誌記錄添加到正在處理的Java Web項目中。我遇到了一個我無法弄清楚的錯誤。log4j無法讀取配置文件

我從Tomcat得到的錯誤是:
log4j:ERROR Could not read configuration file [log4j.properties]. java.io.FileNotFoundException: log4j.properties (No such file or directory)

我有這個簡單的方法在我的課:

@RemotingInclude 
public UserAccount save(UserAccount dataObject) 
{ 
    PropertyConfigurator.configure("log4j.properties"); 
    logger.debug(dataObject.toString()); 

    return dao.save(dataObject); 
} 

當我看着我的webapps // WEB-INF /類文件夾我看到我的log4j.properties文件。當我部署到我的tomcat服務器並重新啓動tomcat時,我看到我的admin.log文件已創建,但沒有寫入它。即使在擊中上述方法之後。任何幫助,這是非常感謝。

這是我的log4j.properties文件的當前內容:

log4j.appender.AdminFileAppender=org.apache.log4j.FileAppender 
log4j.appender.AdminFileAppender.File=admin.log 
log4j.appender.AdminFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.AdminFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n. 
log4j.appender.ReportFileAppender=org.apache.log4j.FileAppender 
log4j.appender.ReportFileAppender.File=report.log 
log4j.appender.ReportFileAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.ReportFileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n 
log4j.logger.com.rottmanj.services=WARN,AdminFileAppender 

回答

1

這Bootstrap逼近的Log4j的做法是錯誤的。這通常是執行的方式:

import org.apache.log4j.Logger; 

public class MyService { 

    public UserAccount save(UserAccount dataObject) { 
     logger.debug(dataObject.toString()); 

     return dao.save(dataObject); 

    } 

    private static Logger logger = Logger.getLogger(MyService.class); 

} 

這樣的Log4j將自動查找在classpath的根目錄中的log4j.properties。

+0

這解決了我的問題,謝謝阿爾弗雷多。 – rottmanj

+0

我需要把下面的代碼放在我所有的類文件中,或者僅僅是主要的?公共UserAccount保存(UserAccount數據對象){ logger.debug(dataObject.toString()); return dao.save(dataObject); } – Siddharth