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

其他回答

如果您正在使用Eclipse,并且在之前一切正常工作之后出现了这个问题,请尝试转到Project - Clean - Clean。

这个简短的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

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

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

看起来您需要添加log4j的位置。属性文件到Eclipse中的类路径中。

确保您的项目在Eclipse中是打开的,然后单击Eclipse顶部的“Run”菜单,然后单击以下内容:

运行 运行配置 类路径(选项卡) 用户条目 高级(右侧按钮) 添加文件夹 然后导航到包含log4j的文件夹。属性文件 应用 运行

错误消息将不再出现。

当Log4J Java代码在程序中搜索以创建第一行日志时,Log4J将显示此警告消息。

此时Log4j做了两件事

它搜索log4j。属性文件 它搜索实例化log4j.properties中定义的appender

如果log4J没有找到log4J。属性文件或在log4j中声明的appender。在log4j的其他地方没有定义Rootlogger。系统弹出“属性”文件中的警告信息。

注意:“属性”文件内容必须正确。

以下内容不正确

log4j.rootLogger=file

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

因为文件appender在log4j中是以小写形式声明的。并在log4j中定义。使用大写!

正确的文件应该是

log4j.rootLogger=FILE

log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=c:/Trace/MsgStackLogging.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
log4j.appender.FILE.ImmediateFlush=true
log4j.appender.FILE.Threshold=debug
log4j.appender.FILE.Append=false

如果使用MAVEN,则必须放置log4j。src/main/resources中的properties文件并启动MAVEN构建。

Log4j。然后将属性文件复制到目标/类文件夹中。

Log4J使用Log4J。属性文件,它发现在目标/类!