如何将Log4j配置为使用Hibernate的javaweb应用程序?
我是Log4j的新手。通过遵循一些在线教程,我将Log4j集成到我的项目中。我用的是Exlipse。它是一个动态web项目,使用Hibernate。我将Log4j文件添加到我的项目中,然后创建Log4j.xml文件并放在/src文件夹下。我得到以下错误如何将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: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">