Kafka Consumer выводит на консоль избыточные операторы DEBUG (ecilpse)

Я запускаю образец кода из http://www.javaworld.com/article/3060078/big-data/big-data-messaging-with-kafka-part-1.html?page=2 и kafkaconsumer использует тему по желанию, но каждый опрос приводит к распечатке (в стандартный вывод) многих журналов отладки, чего я не хочу.

Я попытался изменить всю ИНФОРМАЦИЮ и ОТЛАДКУ на ОШИБКУ (даже сделал grep, чтобы убедиться) в /config/log4j.properties, в частности, параметр log4j.logger.kafka=ERROR, kafkaAppender, но проблема не устранена. Я сослался на Как настроить ведение журнала для производителей Kafka? и принял решение есть, но, может быть, для потребителей ситуация другая?

Все сообщения 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(); к моему основному методу, чтобы устранить некоторую другую ошибку, возникшую ранее, из-за которой Потребитель даже не запустился.


person Bay Wei Heng    schedule 23.05.2017    source источник


Ответы (4)


Просто измените уровень ведения журнала разговорного класса (болтливое взаимодействие). Поскольку в ваших журналах вы видите записи журнала, происходящие из 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

Надеюсь это поможет

person diginoise    schedule 23.05.2017
comment
Я использовал stackoverflow.com/questions/1509324/log4j-basic-configuration в конце концов, и я знаю, что это решение является более общим (затронуты все классы), но спасибо и за конкретное решение! : D - person Bay Wei Heng; 24.05.2017
comment
Я не уверен, почему, но в примере, на котором я основал свой ответ, использовался slf4j. Но забавно то, что я просто использовал log4j, а затем использовал logback.xml ниже, и это сработало: D! - person Artanis Zeratul; 24.11.2019

создать новый файл конфигурации xml

SRC / основные / ресурсы / 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>
person Zouinkhi    schedule 20.09.2018

Не уверен, что вы говорите о командах 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
person user11488099    schedule 12.05.2019
comment
Ваш пост мне помог. Я получал слишком много WARN непрерывных сообщений от kafka-console-consumer, который, в свою очередь, использует kafka-run-class. Выполнив эту команду type kafka-run-class.bat | findstr /sin log4j.properties, я обнаружил, что она действительно использует tools-log4j.properties, и изменение этой строки log4j.rootLogger=WARN, stderr на log4j.rootLogger=ERROR, stderr решило мою проблему. Спасибо. - person jumping_monkey; 13.03.2020

Я нашел решение по другому вопросу, который касается производителей Kafka, но по сути это та же проблема: 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);
person szedjani    schedule 08.08.2019