2016-02-24 2 views
2

Я пытаюсь отлаживать зашифрованные сообщения на кластере Kafka. Очевидно, что эти сообщения пестрят не являющихся печатаемых символов и не могут быть использованы на консоли, так что я хотел бы сохранить вывод в файл, например так:Не печатайте предупреждения kafka-console-consumer

kafka-console-consumer \ 
    --zookeeper 0.zookeeper.local,1.zookeeper.local \ 
    --max-messages 1 \ 
    --topic MYTOPIC > /tmp/message 

Я не смог расшифровать полученное сообщение, потому что вывод содержит , наряду с зашифрованным текстом, предупреждающие сообщения, такие как:

[2016-02-24 11:52:47,488] WARN Reconnect due to socket error: null (kafka.consumer.SimpleConsumer) 

есть ли способ, чтобы получить одно сообщение в файле и НЕ вставлять предупреждения в этом файле?

ответ

5

Существует специальный конфигурационный файл журнала для входящих консольных инструментов. Пожалуйста, измените уровень регистратора с WARN на OFF в [kafka_home] /config/tools-log4j.properties файл. Файл должен выглядеть следующим образом:

tools-log4j.properties

log4j.rootLogger=OFF, stdout 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n 

После этого вы получите только сообщения в консоли.

+0

Просто протестируйте его, он работает как шарм, спасибо! – user48678

+1

также полезен, если вы хотите получить вывод DEBUG от пользователя консоли – Rob

+0

Вы также можете изменить 'stdout' на' stderr' в каждой строке, чтобы линии журнала не перенаправлялись в ваш файл сообщений. Вам также может потребоваться добавить строку: 'log4j.appender.stderr.Target = System.err' – MorganGalpin