正确初始化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.xml
或 log4j.properties
)。将其放入 src
文件夹会自动执行此操作。
如果你不想把它放在那里,你可以通过系统告诉 Log4j 去哪里找它 属性 log4j.configuration
。然后启动您的应用程序变为:java -Dlog4j.configuration=file:"D:\..." -jar myapp.jar
。在Eclipse中,系统属性配置在"Run Configurations > Arguments > VM arguments".
默认情况下,Log4j 在类路径的根目录中搜索配置文件(log4j.xml
或 log4j.properties
)。将其放入 src 文件夹会自动执行此操作。
我正在尝试为我的一个项目设置 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.xml
或 log4j.properties
)。将其放入 src
文件夹会自动执行此操作。
如果你不想把它放在那里,你可以通过系统告诉 Log4j 去哪里找它 属性 log4j.configuration
。然后启动您的应用程序变为:java -Dlog4j.configuration=file:"D:\..." -jar myapp.jar
。在Eclipse中,系统属性配置在"Run Configurations > Arguments > VM arguments".
默认情况下,Log4j 在类路径的根目录中搜索配置文件(log4j.xml
或 log4j.properties
)。将其放入 src 文件夹会自动执行此操作。