如何为 Kafka 生产者配置日志记录?

Posted

技术标签:

【中文标题】如何为 Kafka 生产者配置日志记录?【英文标题】:How to configure logging for Kafka producers? 【发布时间】:2016-06-16 20:58:06 【问题描述】:

我正在使用 Kafka 生产者客户端,我的项目中没有任何 log4j 配置。

在运行时,程序会打印很多我真的不想要的 Kafka 调试日志。

所以,我尝试添加一个 log4j.properties 来将日志级别设置为 ERROR,如下所示,这似乎不起作用:

log4j.rootLogger=ERROR

如何更改 Kafka 日志级别?

【问题讨论】:

【参考方案1】:

运行客户端时使用命令行标志-Dlog4j.configuration=file:/path/to/log4j.properties

log4j 属性文件示例:

https://github.com/apache/kafka/blob/trunk/config/tools-log4j.properties 由镜像制作工具等工具使用,实际上只是标准输出 https://github.com/apache/kafka/blob/trunk/config/log4j.properties 被 kafka 服务器等工具使用

对于导致调用kafka-run-class.sh 的镜像制造商和其他工具,您可以使用环境变量KAFKA_LOG4J_OPTS(设置为-Dlog4j.configuration=file:/path/to/log4j.properties 之类的东西)来更改日志记录配置。见:https://github.com/apache/kafka/blob/0.10.2/bin/kafka-run-class.sh#L158

我用于测试的镜像制造商log4j.properties 文件示例。

# https://github.com/apache/kafka/blob/trunk/config/tools-log4j.properties

log4j.rootLogger=DEBUG, stderr

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

【讨论】:

【参考方案2】:

尝试将 logging.level.org.apache.kafka: DEBUG 添加到您的客户端配置属性中。 我正在使用 Springboot,这是格式。为您的客户程序使用适当的格式。

【讨论】:

Cannot set level: WARNING for 'org.apache.kafka' 有什么想法吗?【参考方案3】:
org.apache.log4j.Logger.getLogger("org").setLevel(Level.WARN);
org.apache.log4j.Logger.getLogger("akka").setLevel(Level.WARN);
org.apache.log4j.Logger.getLogger("kafka").setLevel(Level.WARN);

【讨论】:

【参考方案4】:

application.yml 文件或您的属性文件中定义如下日志级别。

logging:
  level:
    root: INFO
    org:
      apache:
        kafka: WARN

通过上面的定义,Kafka 将只打印出警告日志。

【讨论】:

【参考方案5】:

我以为您在谈论 Kafka 服务器日志。您可以使用以下配置将日志级别更改为 ERROR

log4j.logger.kafka=ERROR, kafkaAppender

希望这会有所帮助!

【讨论】:

我说的是我的客户端程序中出现的日志......而不是 kafka 服务器本身......

以上是关于如何为 Kafka 生产者配置日志记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ASP.NET Core 应用配置 Azure 应用服务日志记录提供程序?

如何为 .NET 库配置具有依赖注入的日志记录提供程序

如何为 Openfire 插件创建我自己的日志记录配置

如何为滚动文件系统日志配置 uber-go/zap 记录器?

如何为一张表启用 sequelize 日志记录

.NET Worker Service 添加 Serilog 日志记录