Kafka Consumer输出过多的DEBUG语句到console(eclipse)
Kafka Consumer outputs excessive DEBUG statements to console (ecilpse)
我是 运行 来自 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();
添加到我的主要方法中,以解决之前发生的一些其他错误,这些错误甚至阻止了消费者启动。
只需修改chatty class(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
希望对您有所帮助
创建新配置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>
不确定您是否在谈论 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
(或者将其替换为 INFO
和 WARM
上面行的日志级别
tools-log4j.properties:log4j.rootLogger=INFO, WARM, stderr
我在另一个涉及 Kafka 生产者的问题下找到了解决方案,但它本质上是同一个问题:
所以我只是 运行 我的程序开头的以下 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);
我是 运行 来自 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();
添加到我的主要方法中,以解决之前发生的一些其他错误,这些错误甚至阻止了消费者启动。
只需修改chatty class(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
希望对您有所帮助
创建新配置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>
不确定您是否在谈论 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
(或者将其替换为 INFO
和 WARM
上面行的日志级别
tools-log4j.properties:log4j.rootLogger=INFO, WARM, stderr
我在另一个涉及 Kafka 生产者的问题下找到了解决方案,但它本质上是同一个问题:
所以我只是 运行 我的程序开头的以下 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);