我已经把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)作为问题的来源。该类有正确的设置记录器,不需要任何更改!我们可以花很长时间来寻找这个问题!

其他回答

这个简短的log4j介绍指南有点旧,但仍然有效。

该指南将为您提供一些关于如何使用记录器和附加程序的信息。


你可以采用两种简单的方法。

首先是将这一行添加到你的main方法中:

BasicConfigurator.configure();

第二种方法是添加这个标准log4j。属性(从上面提到的指南)文件到你的类路径:

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

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

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

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

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

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

在我的例子中,错误是标记“可加性”。如果你的根项目包为“false”,那么子包将没有appender,你将看到“appender not found”错误。

快速的解决方案:

为main函数添加代码: String log4jConfPath = "/path/to/log4j.properties"; PropertyConfigurator.configure (log4jConfPath); 创建一个名为log4j的文件。/path/to的属性 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

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

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