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

How to configure Log4j to java Web application which uses Hibernate?

我是 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 文件中,我将记录器称为

static Logger log = Logger.getLogger(HibernateUtil.class.getName());


static {
    try {
        DOMConfigurator.configure("log4j.xml");
 }
}

我哪里出错了,谁能帮我解决这个问题。

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

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

为了保持文件井井有条,您可以在名为 resources 的 src(包)下创建一个源目录,并将 log4j.xml 放在那里。然后你可以避免调用 DOMConfigurator.configure 并且 log4j 将自动加载 log4j.xml。另外,请确保您将该资源文件夹作为构建路径中源代码的一部分。您可以通过右键单击资源文件夹 -> 构建路径 -> 用作源文件夹

编辑:

改变

<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。

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

在此处阅读更多内容 and

将log4j.xml文件按如下结构'src/main/resources/log4j.xml'放入工程文件夹中。

从 Eclipse 看应该是'Java Resources'->'src/main/resources'->'log4j.xml'