2011-06-29 130 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