我是Log4j的新手。通过一些在线教程我将Log4j集成到我的项目中。我正在使用Exlipse。它是动态Web项目并使用Hibernate。我将Log4j jarfile添加到我的项目中,接下来我创建了Log4j.xml文件并放在/ src文件夹下。我收到了以下错误
log4j:ERROR Could not open [log4j.xml].
java.io.FileNotFoundException: log4j.xml (The system cannot find the file specified)
这是我的xml文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd-MM-yyyy HH:mm:ss}] %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="10" />
<param name="file" value="${catalina.home}/logs/ITS_Server.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd-MM-yyyy HH:mm:ss}] %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<category name="org.hibernate">
<priority value="DEBUG" />
</category>
<category name="java.sql">
<priority value="debug" />
</category>
<logger name="org.hibernate">
<level value="info"/>
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</log4j:configuration>
在java文件中,我将logger称为
static Logger log = Logger.getLogger(HibernateUtil.class.getName());
static {
try {
DOMConfigurator.configure("log4j.xml");
}
}
我错了,任何人都可以帮助我。
答案 0 :(得分:0)
您的代码尝试执行的操作是手动加载log4j配置,但无法从已部署的资源中找到该文件。
正确的方法是确保log4j.xml在CLASSPATH中。在Eclipse中,源文件夹将位于CLASSPATH中。所以,你可以把它放在那里。
为了保持文件的有序性,您可以在名为resources的src(包)下创建一个源目录,并将log4j.xml放在那里。然后你可以避免调用DOMConfigurator.configure
,log4j会自动加载log4j.xml。此外,请确保将该资源文件夹作为构建路径中源fodler的一部分。您可以通过右键单击资源文件夹来执行此操作 - &gt;构建路径 - &gt;用作源文件夹
修改强>
更改
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
要
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
如果无法使用此example
进行测试编辑2:
对于Hibernate,你有最多的(org.hibernate)会输出大量的消息。那里的水平是INFO。
您可以将级别更改为ERROR以仅记录严重问题。将org.hibernate更改为org.hibernate.SQL将限制正在执行的SQL DML语句的消息类型。
在此处阅读https://stackoverflow.com/a/436687/4388699和https://stackoverflow.com/a/1978415/4388699
答案 1 :(得分:0)
将log4j.xml文件放在项目文件夹中,作为以下结构&#39; src / main / resources / log4j.xml&#39;。
从Eclipse开始,它应该看起来像Java资源&#39; - &gt;&#39; src / main / resources&#39; - &gt;&#39; log4j.xml&#39;