我在 RHEL 8 服务器上安装了支持 log4j2 ( http://home.apache.org/~dongjin/post/apache-kafka-log4j2-support/ ) 的 Kafka 3.0 预览版。Kafka 和 Zookeeper 作为 systemd 用户服务成功运行。我在 systemd 单元文件中设置了环境变量KAFKA_LOG4J_OPTS="-Dlog4j.configurationFile=file:/home/username/kafka/bin/../config/log4j2.properties"
,以便使用 log4j 2.17。
但是,有一件奇怪的事情:所有 log4j 日志都存储在一个目录中,该目录实际上称为${kafka.logs.dir}
主目录。垃圾收集器成功地将日志存储在正确的日志位置~/kafka/logs
。所以这个目录~/kafka/logs
包含了类似的文件kafkaServer-gc.log.0.current
,而奇怪的目录~/${kafka.logs.dir}
包含server.log
,controller.log
等等。
在查看 kafka 和 zookeeper 的进程时,我可以看到它们都有参数-Dkafka.logs.dir=/home/username/kafka/bin/../logs
。这不应该定义kafka.logs.dir
文件中使用的环境变量config/log4j2.properties
吗?为什么 Zookeeper 和 Kafka 显然无法访问这个$kafka.logs.dir
环境变量?