如何从使用它作为依赖项的 C# 应用程序访问 librdkafka.redist 日志?

How to access librdkafka.redist logs from C# application which uses it as a dependency?

我的应用程序控制台日志显示了很多以下内容:

%3|1602097315.970|FAIL|rdkafka#consumer-2| [thrd:kfkqaapq0002d.ch.me.com:9092/bootstrap]: kfkqaapq0002d.ch.me.com:9092/bootstrap: Failed to resolve 'kfkqaapq0002d.ch.me.com:9092': No such host is known.  (after 42ms in state CONNECT)
%3|1602097315.970|FAIL|rdkafka#consumer-3| [thrd:kfkqaapq0002d.ch.me.com:9092/bootstrap]: kfkqaapq0002d.ch.me.com:9092/bootstrap: Failed to resolve 'kfkqaapq0002d.ch.me.com:9092': No such host is known.  (after 41ms in state CONNECT)
%3|1602097315.972|FAIL|rdkafka#producer-1| [thrd:kfkqaapq0003d.ch.me.com:9092/bootstrap]: kfkqaapq0003d.ch.me.com:9092/bootstrap: Failed to resolve 'kfkqaapq0003d.ch.me.com:9092': No such host is known.  (after 48ms in state CONNECT)
%3|1602097315.973|ERROR|rdkafka#producer-1| [thrd:app]: rdkafka#producer-1: kfkqaapq0003d.ch.me.com:9092/bootstrap: Failed to resolve 'kfkqaapq0003d.ch.me.com:9092': No such host is known.  (after 48ms in state CONNECT)
%3|1602097316.459|FAIL|rdkafka#producer-1| [thrd:kfkqaapq0001d.ch.me.com:9092/bootstrap]: kfkqaapq0001d.ch.me.com:9092/bootstrap: Failed to resolve 'kfkqaapq0001d.ch.me.com:9092': No such host is known.  (after 42ms in state CONNECT)

None 出现在应用程序日志文件中。

我的应用程序是用 C# 开发的,并且有 Confluent.Kafka 作为使用 librdkafka.redist 的依赖项。我想这就是它的来源。我正在调查它们与心跳有关的可能性。

我的 appSettings.json 具有以下日志记录配置:

"Logging": {
  "IncludeScopes": false,
  "LogLevel": {
    "Default": "Debug",
    "Microsoft": "Warning",
    "Microsoft.Hosting.Lifetime": "Information"
  },
  "FileTargetPath": "./Logs",
  "FileTargetName": "My.Application"
},

这是否也写入了任何地方的日志文件,或者有什么方法可以从我的应用程序中的 .NET Core Healthcheck 解析它?

您可以将自己的日志处理程序传递给客户端生成器,请参阅 https://docs.confluent.io/current/clients/confluent-kafka-dotnet/api/Confluent.Kafka.ProducerBuilder-2.html#Confluent_Kafka_ProducerBuilder_2_SetLogHandler_System_Action_Confluent_Kafka_IProducer__0__1__Confluent_Kafka_LogMessage__

例如:

           using (var producer =
                new ProducerBuilder<byte[], byte[]>(producerConfig)
                    .SetLogHandler((_, m) => ..emit m as you wish..)
                    .Build())