Kafka 中的日志

Kafka 中的日志主要分为多个文件类型,其中包括:

  • server.log:Kafka 服务的主日志文件,记录所有的运行信息、异常、警告等,最常用。
  • state-change.logKafka 控制器和 broker 状态变化相关的日志,主要用于追踪 broker 和 partition 的状态迁移、Leader 选举等状态切换操作。

🔍 state-change.log 是什么?

state-change.log 的主要作用是 记录 Kafka broker、partition、controller 等组件在状态之间切换的详细过程,包括:

  • Partition 的 leader 和 follower 切换;
  • Controller 的状态转移(如新 controller 被选举出来);
  • 分区的状态机(PartitionStateMachine)执行的动作,如从 NonExistentPartition -> NewPartition -> OnlinePartition 的流程;
  • Broker 加入、下线、被踢出 ISR(in-sync replica)等过程。

这些信息对排查 leader 不可用、数据不同步、controller 频繁选举等问题非常关键。


📁 state-change.log 在哪里?

默认位置和 server.log 一样,取决于 Kafka 的日志路径设置:

# server.properties
log.dirs=/tmp/kafka-logs
log4j.appender.kafkaAppender.File=/opt/kafka/logs/server.log

日志输出是由 log4j.properties 控制的:

# 日志定义(通常在 config/log4j.properties 文件中)
log4j.logger.kafka.controller=INFO, controllerAppender
log4j.logger.kafka.server.StateChangeLogger=INFO, stateChangeAppender

log4j.appender.stateChangeAppender=org.apache.log4j.RollingFileAppender
log4j.appender.stateChangeAppender.File=/opt/kafka/logs/state-change.log
log4j.appender.stateChangeAppender.MaxFileSize=256MB
log4j.appender.stateChangeAppender.MaxBackupIndex=10
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

📝 你可以通过查看 config/log4j.properties 文件来确认 state-change.log 的输出路径。


📌 如果没有 state-change.log,怎么办?

  • 可能你的 Kafka 没有显式配置 stateChangeAppender
  • Kafka 会将相关日志输出到 server.log 中;
  • 你可以修改 log4j.properties 手动添加 stateChangeAppender,并重启 Kafka;

✅ 示例日志内容(state-change.log)

[2025-06-26 15:02:17,344] INFO [PartitionStateMachine broker=1] Triggering online of partition [my-topic,0] (kafka.server.PartitionStateMachine)
[2025-06-26 15:02:17,345] INFO [PartitionStateMachine broker=1] Successfully transitioned partition [my-topic,0] from NewPartition to OnlinePartition. (kafka.server.PartitionStateMachine)
[2025-06-26 15:02:19,876] INFO [GroupCoordinator 1]: Group foo transitioned to Dead state. (kafka.coordinator.group.GroupCoordinator)

如需我帮你分析某段 state-change.log 或定位某个问题(如 leader 切换异常),欢迎贴出来我一起分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值