Java 正确初始化log4j系统

Java 正确初始化log4j系统,java,eclipse,logging,log4j,Java,Eclipse,Logging,Log4j,我正在为我的一个项目设置log4j。我已经找到了教程,我按照它的每个步骤 当然,我已经将jar文件添加到引用的库中。下图显示log.out文件的路径位于path变量中。这就是我的PATH变量的样子(只是一个片段): 下图显示了log4jjar文件和log4j.properties文件的路径在CLASSPATH变量中。这是我的类路径: log4j.properties文件(与前面提到的教程中的.properties示例相比,我唯一更改的是log4j.appender.file.file):

我正在为我的一个项目设置log4j。我已经找到了教程,我按照它的每个步骤

当然,我已经将jar文件添加到引用的库中。下图显示log.out文件的路径位于path变量中。这就是我的PATH变量的样子(只是一个片段):

下图显示了log4jjar文件和log4j.properties文件的路径在CLASSPATH变量中。这是我的类路径:

log4j.properties文件(与前面提到的教程中的.properties示例相比,我唯一更改的是log4j.appender.file.file):

我的项目层次结构如下所示:

我正在使用以下类对其进行测试:

package test;

import org.apache.log4j.Logger;

import java.io.*;
import java.sql.SQLException;

public class Log4jExample{
    /* Get actual class name to be printed on */
    static Logger log = Logger.getLogger(Log4jExample.class.getName());

    public static void main(String[] args) throws IOException,SQLException{

        log.debug("Hello this is an debug message");
        log.info("Hello this is an info message");
    }
}
我一直收到以下异常,并且未将任何内容记录到指定的文件中:

在尝试跟踪警告消息中指定的链接时,我找到了以下答案:

当无法找到默认配置文件log4j.properties和log4j.xml且应用程序未执行显式配置时,会发生这种情况

为什么找不到log4j.properties?如何解决这个问题

注意:我看到有很多关于这些特定警告消息的帖子,但是,我既没有maven项目,也没有动态web项目。这是一个普通的Java项目,我只是想测试log4j。我使用Windows7和EclipseLuna

更新:似乎如果我将log4j.properties文件移动到src文件夹中,一切都会正常进行。如何从当前的文件结构修改工作


更新#2:我在下面标记为已接受的答案回答了更新中的问题。不过,我也发现了一篇文章,它为这个位置问题提供了一个有用的解决方案。

默认情况下,Log4j在类路径的根目录下搜索配置文件(
Log4j.xml
Log4j.properties
)。将其放入
src
文件夹会自动执行此操作


如果您不希望它在那里,可以通过系统属性
Log4j.configuration
告诉Log4j在哪里查找它。然后,启动应用程序时变成:
java-Dlog4j.configuration=file:“D:\…”-jar myapp.jar
。在Eclipse中,系统属性是在“运行配置>参数>虚拟机参数”中配置的。

默认情况下,Log4j在类路径根目录下搜索配置文件(
Log4j.xml
Log4j.properties
)。将其放入
src
文件夹会自动执行此操作


如果您不希望它在那里,可以通过系统属性
Log4j.configuration
告诉Log4j在哪里查找它。然后,启动应用程序时变成:
java-Dlog4j.configuration=file:“D:\…”-jar myapp.jar
。在Eclipse中,系统属性是在“运行配置>参数>虚拟机参数”中配置的。

默认情况下,Log4j在类路径根目录下搜索配置文件(
Log4j.xml
Log4j.properties
)。将其放入src文件夹会自动执行此操作。

默认情况下,Log4j会在类路径的根目录下搜索配置文件(
Log4j.xml
Log4j.properties
)。将其放入src文件夹会自动执行此操作。

完全相同的答案由@Tunaki给出。请编辑您的答案。完全相同的答案由@Tunaki制定。请编辑您的答案。