【问题标题】:Properly initialize log4j system正确初始化 log4j 系统
【发布时间】:2015-04-13 17:29:40
【问题描述】:

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

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

下图显示log4j jar文件和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");
    }
}

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

当尝试点击 WARN 消息中指定的链接时,我找到了以下答案:

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

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

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

更新: 看来,如果我将 log4j.properties 文件移动到 src 文件夹,一切都会好起来的。我怎样才能修改东西以从当前的文件结构中工作?

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

【问题讨论】:

    标签: java eclipse logging log4j


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • @Tunaki 制定了完全相同的答案。请编辑您的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 2011-09-30
      • 2010-11-11
      • 1970-01-01
      • 2018-06-28
      • 2020-05-05
      相关资源
      最近更新 更多