如何将Log4j配置为使用Hibernate的javaweb应用程序?

如何将Log4j配置为使用Hibernate的javaweb应用程序?,java,xml,hibernate,logging,log4j,Java,Xml,Hibernate,Logging,Log4j,我是Log4j的新手。通过遵循一些在线教程,我将Log4j集成到我的项目中。我用的是Exlipse。它是一个动态web项目,使用Hibernate。我将Log4j文件添加到我的项目中,然后创建Log4j.xml文件并放在/src文件夹下。我得到以下错误 log4j:ERROR Could not open [log4j.xml]. java.io.FileNotFoundException: log4j.xml (The system cannot find the file specified

我是Log4j的新手。通过遵循一些在线教程,我将Log4j集成到我的项目中。我用的是Exlipse。它是一个动态web项目,使用Hibernate。我将Log4j文件添加到我的项目中,然后创建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>

在我出错的地方,有人能在这方面帮助我吗。

您的代码试图做的是手动加载log4j配置,但它无法从部署的资源中找到该文件

正确的方法是确保log4j.xml位于类路径中。在Eclipse中,源文件夹将位于类路径中。所以,你可以把它放在那里

为了使文件保持有序,您可以在名为resources的src(包)下创建一个源目录,并将log4j.xml放在那里。然后可以避免调用
DOMConfigurator.configure
,log4j将自动加载log4j.xml。另外,请确保在构建路径中将资源文件夹作为源fodler的一部分。您可以通过右键单击resources文件夹->Build Path->Use as a Source文件夹来实现这一点

编辑:

改变

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


如果这对测试没有帮助的话

编辑2:

对于Hibernate,您拥有最顶层(org.Hibernate),它将输出大量消息。那里的级别是信息

您可以将级别更改为“错误”,以仅记录严重问题。将org.hibernate更改为org.hibernate.SQL会将消息类型限制为正在执行的SQL DML语句


在此处阅读更多信息,并将log4j.xml文件作为以下结构“src/main/resources/log4j.xml”放入项目文件夹中。


在Eclipse中,它应该看起来像“Java资源”->“src/main/Resources”->“log4j.xml”

您的确切意思是什么?我是否需要按名称资源创建一个文件夹。将log4j.xml复制到Eclipse项目的src文件夹中。在IDE中刷新项目。然后,注释掉
.configure
调用是的,我按照你说的做了,但没有用。日志未登录到文件中。是的,我将其设置为
true
,但不起作用。我怀疑我的文件夹结构。是否正确?将log4j.xml放在src的根目录中以解决此问题。如果您希望资源也位于类路径中,请右键单击“源”选项卡中的项目->属性->Java构建路径->添加资源文件夹,然后确保log4j xml文件存在于“src/main/resources/log4j.xml”这样的目录中?@SaqibRezwan现在可以查看我的文件夹结构吗?我不确定。我所有的spring项目结构都类似于Eclipse中的“Java资源”->“src/main/Resources”->log4j.properties。然而,由于许多原因(在eclipse中),它看起来可能会有所不同。您可以检查项目文件夹(HDD中)中的文件路径为“src/main/resources/log4j.xml”吗?@SaqibRezwan我的日志系统现在工作正常。如何将所有与hibernate信息相关的日志记录到一个文件中。看看我更新的xml文件。问题是什么?你是如何解决的?新问题应该在新的思路中。但是,在“Appender ref”标签中使用rootLogger,并将“Level value”设置为“INFO”。谢谢你的回复,我已经解决了这个问题,你能看看我的另一个问题吗,
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">