Apache kafka 使用kafka avro控制台使用者记录MessageFormatter

Apache kafka 使用kafka avro控制台使用者记录MessageFormatter,apache-kafka,log4j,avro,kafka-consumer-api,confluent-schema-registry,Apache Kafka,Log4j,Avro,Kafka Consumer Api,Confluent Schema Registry,我正在尝试使用log4j格式的kafka avro console consumer打印关于kafka主题的avro消息 为此,我使用以下kafka avro控制台使用者命令: bin/kafka-avro-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter 我

我正在尝试使用log4j格式的kafka avro console consumer打印关于kafka主题的avro消息

为此,我使用以下kafka avro控制台使用者命令:

 bin/kafka-avro-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter 
我已通过以下命令导出KAFKA_选项:

 export $KAFKA_OPTS= -Dlog4j.configuration=file:/path/to/file/kafka-console-consumer-log4j.properties
bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter
 bin/kafka-avro-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter 
现在,如果我使用以下命令运行常规kafka console consumer:

 export $KAFKA_OPTS= -Dlog4j.configuration=file:/path/to/file/kafka-console-consumer-log4j.properties
bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter
 bin/kafka-avro-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter 
我能够生成启用log4j的输出:

[2018-07-17 19:09:40,514] INFO [Consumer clientId=consumer-1, groupId=console-consumer-10597] (Re-)joining group (org.apache.kafka.clients.consumer.internals.AbstractCoordinator)
[2018-07-17 19:09:40,522] INFO [Consumer clientId=consumer-1, groupId=console-consumer-10597] Successfully joined group with generation 1 (org.apache.kafka.clients.consumer.internals.AbstractCoordinator)
[2018-07-17 19:09:40,523] INFO [Consumer clientId=consumer-1, groupId=console-consumer-10597] Setting newly assigned partitions [avro-test-0] (org.apache.kafka.clients.consumer.internals.ConsumerCoordinator)
[2018-07-17 19:09:40,531] INFO [Consumer clientId=consumer-1, groupId=console-consumer-10597] Resetting offset for partition avro-test-0 to offset 23. (org.apache.kafka.clients.consumer.internals.Fetcher)
但是,如果使用以下命令使用avro使用者,则此格式化选项不起作用:

 export $KAFKA_OPTS= -Dlog4j.configuration=file:/path/to/file/kafka-console-consumer-log4j.properties
bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter
 bin/kafka-avro-console-consumer --bootstrap-server localhost:9092 --topic avro-test -property print.key=true --formatter kafka.tools.LoggingMessageFormatter 
它只是求助于一个默认的格式化程序


这里有什么我可能遗漏的吗?

我认为如果您重写
--格式化程序
,您将不会再收到Avro消息,因为
kafka.tools.LoggingMessageFormatter
不知道如何反序列化Avro

因此,它应该像预期的那样运行
kafka.tools.ConsoleConsumer--formatter kafka.tools.LoggingMessageFormatter
,因为默认值是未分配的,而
schema registry run class
正在定义
kafka\u OPTS
,但这一行上不需要空格或美元符号

export KAFKA_OPTS='-Dlog4j.configuration=file:/path/to/file/kafka-console-consumer-log4j.properties'
bin/kafka-avro-console-consumer ...