Docker 分布式模式下的kafka connect未生成通过log4j属性指定的日志
我已经在我的工作设置中使用了Docker 分布式模式下的kafka connect未生成通过log4j属性指定的日志,docker,apache-kafka,docker-compose,apache-kafka-connect,Docker,Apache Kafka,Docker Compose,Apache Kafka Connect,我已经在我的工作设置中使用了Kafka Connect一段时间了,它工作得非常好。 最近,我想在我基于docker的kafka cluser中尝试一些自己的连接器,只使用一个代理(ubuntu:18.04,安装了kafka)和一个单独的节点作为部署连接器应用程序的客户端 问题是: 一旦我的代理启动并运行,我登录到客户机节点(没有代理运行,只有普通的kafka安装),我设置类路径以指向我的连接器库。另外,KAFKA_LOG4J_选择环境变量,指向启用调试模式时要生成的日志文件的位置。 所以每次我用
Kafka Connect
一段时间了,它工作得非常好。最近,我想在我基于docker的kafka cluser中尝试一些自己的连接器,只使用一个代理(ubuntu:18.04,安装了kafka)和一个单独的节点作为部署连接器应用程序的客户端 问题是:
一旦我的代理启动并运行,我登录到客户机节点(没有代理运行,只有普通的kafka安装),我设置类路径以指向我的连接器库。另外,
KAFKA_LOG4J_选择
环境变量,指向启用调试模式时要生成的日志文件的位置。所以每次我用命令启动卡夫卡工作程序时: nohup/opt//bin/connect-distributed/opt//config/connect-distributed.properties>/dev/null 2>&1& 连接器开始运行,但我没有看到生成日志文件。 我试过几次改变,但都没有效果 问题:
- 这是否意味着connect-distributed.sh在读取变量后不会生成日志文件
?如果有,有人能解释一下怎么做吗KAFKA_LOG4J_选项
(我已经调试了connect-distributed.sh脚本,并尝试了包括和不包括守护进程模式的选项,默认情况下,如果未提供
KAFKA_LOG4J_OPTS
,它将使用config目录中的connect-LOG4J.properties
文件,但即使这样也不会生成日志文件)
观察:
只有在客户端节点上启动zookeeper/broker,然后选择提供的KAFKA_LOG4J_OPTS
值,并开始生成日志,但与KAFKA连接器无关。我已经使用kafkacat验证了与客户和代理的连接
有趣的部分是:
每次启动worker(connnect distributed.sh
)时,我都会在我的工作区中执行相同的过程,并开始生成日志,但我还没有在自己的设置中复制这些行为)。我不知道我在这里遗漏了什么。
有人能提供一些理由吗,这真的让我抓狂。请提供您设置为
KAFKA_LOG4J_选项的内容
export KAFKA_LOG4J_OPTS=“-Dlog4j.configuration=file:///u01/shared_data/connect-azuresql-log4j.properties"echo$KAFKA_LOG4J_opts在connect-azuresql-LOG4J.properties
文件中有什么?LOG4J.rootLogger=DEBUG,traceFile log4j.appender.traceFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.traceFile.DatePattern='.'yyyyy-MM-dd-HH log4j.appender.traceFile.File=/u01/shared_data/logs_dir/connect-worker.log log4j.appender.traceFile.layout=org.apache.log4j.pattern布局log4j.appender.traceFile.layout=[%d]%p%m(%c)%n log4j.logger.org.apache.zookeeper=ERROR log4j.logger.org.I0Itec.zkclient=ERROR log4j.logger.org.reflections=ERROR仅当代理或zookeeper在我运行worker的节点上运行时,才会生成此日志文件。仅使用远程代理运行worker不会生成日志文件。