为什么我收到了我得到的错误?

时间:2014-05-12 18:30:42

标签: java log4j

我在下面有一个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

enter image description here

1 个答案:

答案 0 :(得分:1)

Log4j似乎无法找到您的配置文件。您是否尝试使用以下参数运行应用程序:

-Dlog4j.configuration=file:config/log4j.properties

以便Log4j使用系统属性"config/log4j.properties"找到您的配置文件(log4j.configuration):

enter image description here

或者,您也可以将此配置文件放在类路径中,以便Log4j找到它,就像在源目录中一样:

Log4j config file location

否则,这是Log4j文档解释的内容或此错误消息:

  

当找不到默认配置文件log4j.properties和log4j.xml且应用程序不执行显式配置时,会发生这种情况。 log4j使用Thread.getContextClassLoader()。getResource()来定位默认配置文件,而不是直接检查文件系统。了解放置log4j.properties或log4j.xml的适当位置需要了解正在使用的类加载器的搜索策略。 log4j不提供默认配置,因为在某些环境中可能禁止输出到控制台或文件系统。另请参阅常见问题解答:为什么log4j不能在J2EE或WAR应用程序中找到我的属性?