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

时间:2015-04-20 09:58:07

标签: java xml hibernate logging log4j

我是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");
 }
}

我错了,任何人都可以帮助我。

2 个答案:

答案 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/4388699https://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;