J'exécute un exemple de code à partir de http://www.javaworld.com/article/3060078/big-data/big-data-messaging-with-kafka-part-1.html?page=2 , et le kafkaconsumer consomme du sujet comme vous le souhaitez, mais chaque sondage entraîne l'impression (à la sortie standard) de nombreux journaux de débogage, ce que je ne veux pas.
J'ai essayé de changer toutes les INFO et DEBUG en ERREUR (j'ai même fait un grep pour m'assurer) dans /config/log4j.properties
, En particulier en définissant log4j.logger.kafka=ERROR
, KafkaAppender, mais le problème persiste. J'ai fait référence à Comment configurer la journalisation pour Kafka producteurs? , et j'ai adopté la solution là-bas, mais la situation est peut-être différente pour les consommateurs?
Les messages DEBUG ont tous un format similaire:
[Thread-0] DEBUG org.Apache.kafka.clients.consumer.internals.Fetcher - Sending fetch for partitions... to broker... (id: 0 rack: null)
et apparaissent au rythme de 10 toutes les secondes environ (changer l'argument de sondage à 1000 ou même 10000 n'aide pas, j'ai essayé)
J'apprécierais vraiment toute aide d'un expert. Merci d'avance!
Edit: Je ne sais pas si cela importe, mais j'ai ajouté BasicConfigurator.configure();
à ma méthode principale, pour résoudre une autre erreur survenue précédemment qui empêchait même le consommateur de démarrer.
Modifiez simplement le niveau de journalisation de la classe de discussion (interaction de discussion). Puisque dans vos journaux, vous voyez des entrées de journal provenant de org.Apache.kafka.clients.consumer.internals.Fetcher
vous pouvez simplement ajuster le niveau de journalisation de cet enregistreur en ajoutant la ligne suivante à log4j.properties
:
log4j.logger.org.Apache.kafka.clients.consumer.internals.Fetcher=WARN
... ou tout autre enregistreur de capture plus large, car ceux-ci sont espacés d'un nom:
# adjusting logging for entire Kafka
log4j.logger.org.Apache.kafka=WARN
J'espère que cela t'aides
créer un nouveau fichier xml de configuration
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>
Je ne sais pas si vous parlez des commandes kafka-console-consumer, si oui, c'est ce que j'ai fait:
[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
Il vous suffit donc de modifier /etc/kafka/tools-log4j.properties
fichier et supprimez DEBUG
(ou remplacez-le pour exmaple par INFO
et WARM
niveaux de journalisation sur la ligne ci-dessus
tools-log4j.properties:log4j.rootLogger=INFO, WARM, stderr
J'ai trouvé la solution sous une autre question qui concerne les producteurs Kafka, mais c'est essentiellement le même problème: https://stackoverflow.com/a/49532152/238055
Je lance donc juste les 3 lignes suivantes au début de mon programme:
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);