我正在运行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();
,以解决之前发生的其他一些错误,导致消费者甚至无法启动。
答案 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
(或将其替换为上面一行中的INFO
和WARM
日志级别
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);