2020年的春节新冠状病毒肆虐,只能宅在家里(天赋异禀),闲来无事再次打开kafka项目阅读源码,但是从一开始就有个小问题困扰着我,
kafka本地启动后不打印日志,虽然能运行,但是心里总是很难受,今日下定决心解决之
在kafka源码环境搭建一文中,启动kafka之后,控制台如下
和我们用命令启动不一样,完全没有日志产生
虽然我通过百度,Stack Overflow等多个地方查找,想要解决这个问题,
但解决方案还是在图片中的链接里:http://www.slf4j.org/codes.html#StaticLoggerBinder
根据下面的提示,只需要替换这三个jar的任意一个即可
1 | Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar |
剩下的就简单了,通过本人的摸索(没有学习过gradle),kafka的依赖管理在如下位置
log4j_bugfix是我新加的一个依赖,分别在dependencies.gradle的versions和libs数组的最后一行添加
1 | versions += [ |
完成以上步骤后,找到根目录下的build.gradle文件,大约来543行,添加刚才新增的依赖
最后在启动参数中加入log的目录配置:-Dkafka.logs.dir=
启动kafka,日志开始正常打印,大功告成
1 | [2020-01-25 21:34:51,570] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$) |
2020年02月19日更新
本人IDEA升级后,突然又不打印日志了,但是错误提示变为
1 | No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$) |
首先保证log4j在classpath下,也就是在core/src/main/resources/log4j.properties下
然后找到File->Project Structure中的Global library,点击加号添加scala(2.11.12) sdk,Ctrl+A全选所有模块,确定后重启项目
如果还是不行,找到IDEA最右侧的gradle按钮,点击刷新按钮即可