我正在尝试为我的项目设置log4j。我找到了this教程,我遵循了每个步骤。
当然,我已将jar文件添加到 Referenced Libraries 。下图显示 log.out 文件的路径位于PATH变量中。这就是我的PATH变量的样子(只是一个片段):
下图显示了log4j jar文件和 log4j.properties 文件的路径位于CLASSPATH变量中。这是我的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 文件夹,似乎一切正常。如何根据当前的文件结构修改工作内容?
更新#2:我在下面标记为已接受的答案会从更新中回答我的问题。但是,我还发现this帖子提出了一个有用的解决方案来解决这个问题。
答案 0 :(得分:4)
默认情况下,Log4j会在类路径的根目录中搜索配置文件(log4j.xml
或log4j.properties
)。将它放在src
文件夹中会自动执行此操作。
如果您不希望在那里,可以通过系统属性log4j.configuration
告诉Log4j在哪里查找它。然后启动您的应用程序:java -Dlog4j.configuration=file:"D:\..." -jar myapp.jar
。在Eclipse中,系统属性在"运行配置>中配置。参数> VM参数"。
答案 1 :(得分:0)
默认情况下,Log4j会在类路径的根目录中搜索配置文件(log4j.xml
或log4j.properties
)。将它放在src文件夹中会自动执行此操作。
答案 2 :(得分:-1)
试试这个:
private static Logger logger
= LogManager.getLogger(<<YOURCLASSNAME>>.class.getName());
public static void main(String[] args) {
/*
* use DOMConfigurator class
* to initialize the log4j environment
* using a DOM tree
*
*/
DOMConfigurator.configure("log4j.xml");
logger.info("your info");
&#13;
我在log4j.xml中配置了log4j属性
// sample log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
<param name="Threshold" value="INFO" />
<param name="File" value="logfile.log" />
<layout class="org.apache.log4j.PatternLayout" >
<param name="ConversionPattern" value="%d %-5p [%c] %m %n" />
</layout>
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="fileAppender"/>
</root>
</log4j:configuration>
&#13;