我在下面有一个Log4j记录器的代码。我不得不说很多人在不同的问题上给了我这方面的帮助。但我认为,因为它是一个新的问题,我会打开一个。
我的问题是为什么我会收到这些错误?我是否正确配置了所有内容?如何添加appender。我认为我在某处遗漏了某些东西,但我不确定它是什么。
代码:
package TestMenu;
import org.apache.log4j.Logger;
import javax.swing.*;
public class TestLogs {
private static Logger logger = Logger.getLogger(TestLogs.class.getName());
public TestLogs() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
}
}
private void LogTester() {
logger.info("It works");
}
public static void main(String[] args) {
TestLogs tls = new TestLogs();
tls.LogTester();
}
}
错误:
log4j:WARN No appenders could be found for logger (TestMenu.TestLogs).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
属性文件:
# Root logger
log4j.rootLogger=INFO, file, stdout
# Write to file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File="C:\Users\itpr13266\Desktop\test.log"
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Write to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
答案 0 :(得分:1)
Log4j似乎无法找到您的配置文件。您是否尝试使用以下参数运行应用程序:
-Dlog4j.configuration=file:config/log4j.properties
以便Log4j使用系统属性"config/log4j.properties"
找到您的配置文件(log4j.configuration
):
或者,您也可以将此配置文件放在类路径中,以便Log4j找到它,就像在源目录中一样:
否则,这是Log4j文档解释的内容或此错误消息:
当找不到默认配置文件log4j.properties和log4j.xml且应用程序不执行显式配置时,会发生这种情况。 log4j使用Thread.getContextClassLoader()。getResource()来定位默认配置文件,而不是直接检查文件系统。了解放置log4j.properties或log4j.xml的适当位置需要了解正在使用的类加载器的搜索策略。 log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。另请参阅常见问题解答:为什么log4j不能在J2EE或WAR应用程序中找到我的属性?