kafka 源码调试环境搭建以及踩坑记录
前言
闲来无事想搭看看kafka源码,本以为是个非常简单的事情,结果,遇到的坑困扰我一整天
搭建步骤
准备
gradle
scala
jvm(自行安装)
kafka 源码包
idea(自行安装)
zk(自行安装)
gradle
下载地址为:gradle.org/releases/,笔者使用的版本是3.1
配置环境变量
解压之后将路径添加到环境变量中即可,其中GRADLE_HOME/bin的路径添加到环境变量Path中即可,其中$GRADLE_HOME指的是Gradle的根目录。
可以使用gradle -v命令来验证Gradle是否已经配置完成,
kafka
下载
我推荐先是去下载kafka源码包,因为这样可以确定后序需要安装的scala版本
官网下载
这里我下载的是1.0.0
因为我也是先看的网上的教程去玩的,注意要下载src.tgz 结尾的包,这才是源码
解压
解压完之后看 gradle.properties
这是最合适的scala版本,当然了下载的源码包的时候官网也有列出合适的scala 版本
scala
下载地址为:www.scala-lang.org/download/2.…
选择适合自己的安装方式,这里小编用的是安装包解压
配置环境变量
如Gradle一样,只需要解压并将路径添加到环境变量即可,其中SCALA_HOME/bin
的路径添加到环境变量Path即可,其中$SCALA_HOME指的是Scala的根目录。可以使用scala -version命令来验证scala是否已经配置完成,示例如下:
源码配置
这时候先别急着打开idea,先在源码目录下执行 gradle idea
等看到构建成功就OK了,这时候导入到idea
配置文件修改
将log4j.properties移到core\main下
可以在log4j 中配置
kafka.logs.dir=/Users/hans/work_space/java_project/kafka-1.0.0-src/kafka-logs
这里是绝对路径
server.properties 文件配置zk 的地址
zookeeper.connect=localhost:2181 复制代码
启动配置
先启动zk,然后配置idea
然后就像启动java项目一样,启动按钮一点完事
需要等一会就看到启动成功了
踩坑记录
启动之后控制台无任何日志输出
就是这个问题困扰我半天
看zk 的日志确实启动成功了,打断点main方法也进来了。
网上都是说把log4j.properties 放到 main 目录下,但是我确定我有,但是日志就是不打印
后来冷静想想和这个错误和java项目一样,也是引用的log4j 的jar包,于是就去网上找log4j 加载配置文件的源码,终于让我找到一个关键的类
org.apache.log4j.LogManager
然后在kafka 源码项目中打断点就会发现确实找不到,然后执行classLoader.getResource("")
发现这目录是在builder中
恍然大悟,对哦,我们看的是项目源码目录,运行时候肯定也有个目录,一看果然没有
虽然我也不知道为啥没有,明明我又构建一次过,算了不管,直接把log4j配置文件拖进去
这样就OK了
作者:帆影匆匆ig
链接:https://juejin.cn/post/7026619404263620616