我已经把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.

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


当前回答

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

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

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

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

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

其他回答

另一个可能发生这种情况的原因(在RCP4中)是您在目标文件中使用了多个日志记录框架。例如,如果您使用slf4j、log4j和ch.qos.logback的组合,就会发生这种情况。Slf4j的目标文件内容选项卡。

我的Eclipse安装找不到log4j。属性,即使该文件位于src/test/resources。

原因是Eclipse(或m2e连接器)没有将内容从src/test/resources复制到预期的输出文件夹target/test-classes -根本原因是在Java Build Path -> Source选项卡-> Build Path -> src/test/resources下的项目属性中,有一个Excluded: **条目。我去掉了那个被排除的元素。

或者,我可以手动复制src/test/resources/log4j。目标/test-classes/log4j.properties中的属性。

我也有这个问题。 我只是忘记在IntelliJ IDEA中标记资源目录

右键单击您的目录 将目录标记为 资源根

确保属性文件已正确设置。 同样,似乎编译器无法找到属性文件,您可以在pom中设置如下(仅当您使用maven project时)。

<build>
       <sourceDirectory> src/main/java</sourceDirectory>
       <testSourceDirectory> src/test/java</testSourceDirectory>
        <resources>
             <resource>
                  <directory>resources</directory>
             </resource>
        </resources>           
</build >

首先导入:

 import org.apache.log4j.PropertyConfigurator;

然后将以下代码添加到main方法:

String log4jConfPath ="path to/log4j.properties";
PropertyConfigurator.configure(log4jConfPath);

创建一个路径为的文件,并将以下代码添加到该文件中。

log4j.rootLogger=INFO, 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{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n