如何将 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'
我是 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'