正确初始化log4j系统

Properly initialize log4j system

我正在尝试为我的一个项目设置 log4j。我找到了 this 教程,我按照其中的每个步骤进行操作。

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

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

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

这是我的项目层次结构:

我正在使用以下 class 进行测试:

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

我不断收到以下异常,并且没有任何内容记录到指定的文件中:

在尝试遵循 WARN 消息中指定的 link 时,我找到了以下答案:

This occurs when the default configuration files log4j.properties and log4j.xml can not be found and the application performs no explicit configuration.

怎么找不到log4j.properties?如何解决?

注意:我已经看到有很多关于这些特定 WARN 消息的 post,但是,我既没有 Maven 项目,也没有动态 Web 项目.这是一个普通的 Java 项目,我只是想测试 log4j。我有 Windows 7 并使用 Eclipse Luna。

更新: 看来如果我将 log4j.properties 文件移动到 src 文件夹,一切正常。我怎样才能修改文件以在当前文件结构中工作?

UPDATE #2: 我在下面标记为已接受的答案回答了我在 UPDATE 中提出的问题。但是,我还发现 this post 提出了一个有用的解决方案来解决这个位置问题。

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

如果你不想把它放在那里,你可以通过系统告诉 Log4j 去哪里找它 属性 log4j.configuration。然后启动您的应用程序变为:java -Dlog4j.configuration=file:"D:\..." -jar myapp.jar。在Eclipse中,系统属性配置在"Run Configurations > Arguments > VM arguments".

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