如何使用 log4j 启​​用 Kafka 日志记录

How to enable Kafka logging with log4j

我用 maven 下载了 kafka-clients-0.9.0.0.jar,我希望我会看到像 link Kafka Logging

中那样的日志记录

但是我不知道为什么我没有收到任何日志记录,即使我故意错误地设置了 bootstrap.servers,但它只是在没有发出任何警告的情况下卡住了。 我添加了几行代码以使用 log4j 打印到文件,这似乎可行,但不知道为什么 Kafka 无法将事件记录到 log4j。

import org.apache.log4j.Logger;
public class ConsumerLoop implements Runnable {
    final static Logger logger = Logger.getLogger(ConsumerLoop.class);

    @Override
    public void run() {

        logger.warn("running!!!!!");
        }
}


SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2016-04-04 12:54:01 WARN  ConsumerLoop:40 - running!!!!!

注意,有 slf4j-api-1.7.6.jar 作为 kafka 的依赖。即使我包含了所需的库 slf4j-api-x.x.x.jar, slf4j-log4jx-x.x.x.jar 并使用 slf4j 进行记录,但仍然无法获取 kafka 日志。

这是一个老问题,但仍然有人会受益。

只需将 log4j.properties 放在 /src/main/resources 下,数据

log4j.rootLogger=TRACE, stdout    
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n

#log4j.appender.fileAppender=org.apache.log4j.FileAppender
#log4j.appender.fileAppender.File=kafka-request.log
#log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
#log4j.appender.fileAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n


# Turn on all our debugging info
log4j.logger.kafka=TRACE,stdout
#log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG,stdout
#log4j.logger.kafka.consumer.PartitionTopicInfo=TRACE,stdout
#log4j.logger.kafka.request.logger=TRACE,fileAppender
#log4j.additivity.kafka.request.logger=false
#log4j.logger.kafka.network.Processor=TRACE,fileAppender
#log4j.additivity.kafka.network.Processor=false
#log4j.logger.org.I0Itec.zkclient.ZkClient=DEBUG

并添加依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

然后你可以在控制台看到日志。