Java Kafka使用者向控制台(ecilpse)输出过多的调试语句
我正在从运行一些示例代码,kafkaconsumer根据需要从主题中使用,但是每次轮询都会打印(到std out)许多调试日志,这是我不想要的 我在Java Kafka使用者向控制台(ecilpse)输出过多的调试语句,java,logging,apache-kafka,log4j,kafka-consumer-api,Java,Logging,Apache Kafka,Log4j,Kafka Consumer Api,我正在从运行一些示例代码,kafkaconsumer根据需要从主题中使用,但是每次轮询都会打印(到std out)许多调试日志,这是我不想要的 我在/config/log4j.properties中尝试将所有信息和调试更改为ERROR(甚至做了grep以确保),特别是设置log4j.logger.kafka=ERROR,kafkaAppender,但问题仍然存在。我在这里提到并采纳了解决方案,但对于消费者来说,情况可能有所不同 调试消息都具有类似的格式: [Thread-0] DEBUG org
/config/log4j.properties
中尝试将所有信息和调试更改为ERROR(甚至做了grep以确保),特别是设置log4j.logger.kafka=ERROR
,kafkaAppender,但问题仍然存在。我在这里提到并采纳了解决方案,但对于消费者来说,情况可能有所不同
调试消息都具有类似的格式:
[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类的日志记录级别(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
%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n
不确定您是否在谈论kafka控制台使用者命令,如果是,我就是这么做的:
[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行:
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);
我最后使用了,我知道解决方案更通用(所有受影响的类)但也感谢您提供了具体的解决方案!我不知道为什么,但我基于我的答案的示例使用的是slf4j。但有趣的是,我只是使用了log4j,然后使用了下面的logback.xml,它起了作用:D!您的帖子帮助了我。我遇到了来自卡夫卡控制台消费者的大量警告不间断消息,w通过运行这个命令,输入kafka-run-class.bat | findstr/sin log4j.properties
,我发现它确实在使用tools-log4j.properties
,并将这一行log4j.rootLogger=WARN,stderr
修改为log4j.rootLogger=ERROR,stderr
解决了我的问题。T汉克斯。
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);