使用Go语言编写Kafka日志服务

3

我需要Kafka消费者日志来进行调试。我按照以下步骤进行:


    chanLogs := make(chan confluentkafka.LogEvent)
    go func() {
        for {
            logEv := <-chanLogs
            logger.Debug("KAFKA: " + logEv.String())
        }
    }()

    configMap["go.logs.channel.enable"] = true
    configMap["go.logs.channel"] = chanLogs

    consumer, err := confluentkafka.NewConsumer(&configMap)

    err := consumer.SubscribeTopics(Topics, nil)


我从未得到单行。我尝试了使用kafka chan(consumer.Logs())得到相同的结果。我做错了什么? 更新 在最初的帖子中,我错误地设置了参数名称。正确的名称是go.logs.channel.enable。但有时这仍然无法起作用。

尝试将 go.logs.channel.enable 等于 true 添加到配置映射中。 - Matteo
2个回答

2

根据文档描述,您应该启用该功能:

go.logs.channel.enable (bool, false) - Forward log to Logs() channel.
go.logs.channel (chan kafka.LogEvent, nil) - Forward logs to application-provided channel instead of Logs(). Requires go.logs.channel.enable=true.

那么将你的代码更改为:

    configMap["go.logs.channel"] = chanLogs
    configMap["go.logs.channel.enable"] = true

    consumer, err := confluentkafka.NewConsumer(&configMap)

文档或代码库的示例中这里也可以查看相关信息。


1
是的,我错误地写了一个错误的键名。但即使使用正确的键名也不起作用。解决方案是使用参数debug,如这里所示。 - Yura

2
解决方案是添加:
    configMap["debug"] = "all"

我在这里找到了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接