【问题标题】:Don't print the kafka-console-consumer warnings不要打印 kafka-console-consumer 警告
【发布时间】:2016-06-06 17:12:55
【问题描述】:

我正在尝试将加密消息调试到 Kafka 集群上。显然,这些消息充满了不可打印的字符,无法在控制台上使用,所以我想将输出保存在这样的文件中:

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)

有没有办法在文件中获取一条消息并且在该文件中嵌入警告?

【问题讨论】:

    标签: apache-kafka suppress-warnings kafka-consumer-api


    【解决方案1】:

    入站控制台工具有一个特殊的记录器配置文件。请在 [kafka_home]/config/tools-log4j.properties 文件中将记录器级别从 WARN 更改为 OFF。该文件应如下所示:

    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
    

    之后,您将只在控制台中收到消息。

    【讨论】:

    • 如果你想从控制台消费者获取 DEBUG 输出也很有用
    • 您还可以在每一行中将stdout 更改为stderr,以防止日志行被重定向到您的消息文件。您可能还需要附加以下行:log4j.appender.stderr.Target=System.err
    【解决方案2】:

    尝试创建新的配置 xml 文件并再次运行

    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="INFO"/>
        <logger name="org.apache.kafka.common.metrics" level="INFO"/>
        <root level="debug">
            <appender-ref ref="STDOUT" />
        </root>
    </configuration>
    

    【讨论】:

    • 这似乎是一种更好的方法,因为我们可以从应用程序端控制日志记录。
    猜你喜欢
    • 2023-03-09
    • 2021-11-25
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多