问题描述
我正在将记录添加到我正在从事的Java Web项目中.我遇到了一个我无法弄清楚的错误.
我从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/class文件夹中查看时,我会看到我的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
推荐答案
boottrap 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将自动查找log4j.properties of classpath的根.
问题描述
I am adding logging to a java web project I am working on. I have run into an error that I am unable to figure out.
The error I am getting from tomcat is:
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (No such file or directory)
I have this simple method in my class:
@RemotingInclude public UserAccount save(UserAccount dataObject) { PropertyConfigurator.configure("log4j.properties"); logger.debug(dataObject.toString()); return dao.save(dataObject); }
When I look in my webapps//WEB-INF/class folder I do see my log4j.properties file. When I deploy to my tomcat server and restart tomcat, I do see my admin.log file created, but nothing is written to it. Even after hitting the method above. Any help with this is greatly appreciated.
This is the current contents of my log4j.properties file:
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
推荐答案
That approach of bootstraping the Log4j is wrong. This is usually the way that is implemented:
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); }
This way Log4j will automatically lookup for the log4j.properties in the root of the classpath.