我已经把log4j放到了我的buildpath中,但是当我运行我的应用程序时,我得到了以下消息:

log4j:WARN No appenders could be found for logger (dao.hsqlmanager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这些警告是什么意思?这里的阑尾是什么?


当前回答

也许添加相关的项目包含log4j在java构建路径,我添加mahout_h2o到它当我遇到这个问题在一个mahout项目使用eclipse,它工作!

其他回答

这里的大多数答案都建议使用log4j。属性文件放置在正确的位置(对于maven项目,它应该位于src/main/resources)

但对我来说,问题是log4j。属性配置不正确。这是一个适合我的样品,你可以先试用一下。

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
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

我在使用log4j2时也遇到了同样的问题。我的问题是由使用错误的依赖库引起的:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <scope>runtime</scope>
    </dependency>

相反,我应该使用:

<dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <scope>runtime</scope>
    </dependency>

在我的情况下,我有一个log4j2.xml定义在我的“资源”目录,并指定使用它:

System.setProperty("log4j.configurationFile", "log4j2.xml");

在java eclipse中将conf_ref复制到conf文件夹中。

添加如下代码作为第一个代码:

Properties prop = new Properties();
prop.setProperty("log4j.rootLogger", "WARN");
PropertyConfigurator.configure(prop);

原因可能是有些地方缺少“静态”这个词:

final static Logger logging = Logger.getLogger(ProcessorTest.class);

如果我让记录器的实例字段,我得到的正是这个非常警告:

No appenders could be found for logger (org.apache.kafka.producer.Sender)

更糟糕的是,警告不是指向ProcessorTest(错误存在的地方),而是指向一个完全不同的类(Sender)作为问题的来源。该类有正确的设置记录器,不需要任何更改!我们可以花很长时间来寻找这个问题!