Kafka Consumer将过多的DEBUG语句输出到控制台(ecilpse)

时间:2017-05-23 08:12:52

标签: java logging apache-kafka log4j kafka-consumer-api

我正在运行http://www.javaworld.com/article/3060078/big-data/big-data-messaging-with-kafka-part-1.html?page=2中的一些示例代码,并且kafkaconsumer根据需要从主题中消耗,但每次调查都会导致许多调试日志的打印(到标准输出),我不会这样做。 ;想要。

我已尝试在/config/log4j.properties中将所有INFO和DEBUG更改为ERROR(甚至确保grep确认),特别是设置log4j.logger.kafka=ERROR,kafkaAppender,但问题仍然存在。我提到How to configure logging for Kafka producers?,并在那里采用了解决方案,但消费者的情况可能不同?

DEBUG消息都有类似的格式:

[Thread-0] DEBUG org.apache.kafka.clients.consumer.internals.Fetcher - Sending fetch for partitions... to broker... (id: 0 rack: null)

并且以每秒10左右的速度出现(将民意调查改为1000或甚至10000并没有帮助,我试过了)

非常感谢任何专家的帮助。提前谢谢!

编辑:不确定是否重要,但我在主方法中添加了BasicConfigurator.configure();,以解决之前发生的其他一些错误,导致消费者甚至无法启动。

4 个答案:

答案 0 :(得分:6)

只需修改chatty类的日志记录级别(聊天交互)。 由于您在日志中看到来自org.apache.kafka.clients.consumer.internals.Fetcher的日志条目,因此您可以通过向log4j.properties添加以下行来简单地调整该记录器的日志记录级别:

log4j.logger.org.apache.kafka.clients.consumer.internals.Fetcher=WARN

...或任何更宽的捕获记录器,因为它们是名称间隔的:

# adjusting logging for entire Kafka
log4j.logger.org.apache.kafka=WARN

希望这有帮助

答案 1 :(得分:4)

创建新的配置xml文件

  

src / main / resources / logback.xml

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="org.apache.kafka" level="WARN"/>
    <logger name="org.apache.kafka.common.metrics" level="WARN"/>
    <root level="warn">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

答案 2 :(得分:0)

不知道您是否在谈论kafka-console-consumer命令,如果是的话,这就是我所做的:

[training@confluent-training-vm ~]$ cd /etc/kafka
[training@confluent-training-vm kafka]$ grep DEBUG *.properties
log4j.properties:# Change to DEBUG or TRACE to enable request logging
log4j.properties:# Access denials are logged at INFO level, change to DEBUG to also 
log allowed accesses
tools-log4j.properties:log4j.rootLogger=DEBUG, stderr

因此,您只需要编辑/etc/kafka/tools-log4j.properties文件并删除DEBUG(或将其替换为上面一行中的INFOWARM日志级别

tools-log4j.properties:log4j.rootLogger=INFO, WARM, stderr

答案 3 :(得分:0)

我在与卡夫卡生产者有关的另一个问题下找到了解决方案,但本质上是相同的问题:https://stackoverflow.com/a/49532152/2380553

所以我只在程序的开头运行以下3行:

org.apache.log4j.Logger.getLogger("org").setLevel(Level.WARN);
org.apache.log4j.Logger.getLogger("akka").setLevel(Level.WARN);
org.apache.log4j.Logger.getLogger("kafka").setLevel(Level.WARN);