ฉันติดตั้ง Kafka 3.0 รุ่นตัวอย่างพร้อมรองรับ log4j2 (http://home.apache.org/~dongjin/post/apache-kafka-log4j2-support/) บนเซิร์ฟเวอร์ RHEL 8 Kafka และ Zookeeper ทำงานสำเร็จในฐานะบริการผู้ใช้ systemd ฉันตั้งค่าตัวแปรสภาพแวดล้อม KAFKA_LOG4J_OPTS="-Dlog4j.configurationFile=file:/home/username/kafka/bin/../config/log4j2.properties"
ในไฟล์ systemd unit เพื่อให้ log4j 2.17 ถูกใช้
อย่างไรก็ตาม มีสิ่งหนึ่งที่แปลก: บันทึก log4j ทั้งหมดจะถูกจัดเก็บไว้ในไดเร็กทอรีที่เรียกตามตัวอักษร ${kafka.logs.dir}
ในไดเร็กทอรีหลัก ตัวรวบรวมขยะจัดเก็บบันทึกในตำแหน่งบันทึกที่ถูกต้องได้สำเร็จ ~/คาฟคา/บันทึก
. ดังนั้นไดเรกทอรี ~/คาฟคา/บันทึก
มีไฟล์เช่น kafkaServer-gc.log.0.current
ในขณะที่ไดเร็กทอรีแปลกเฮฮา ~/${kafka.logs.dir}
ประกอบด้วย เซิร์ฟเวอร์.log
, คอนโทรลเลอร์.ล็อก
ฯลฯ
เมื่อดูกระบวนการของคาฟคาและผู้ดูแลสวนสัตว์ ฉันเห็นว่าทั้งคู่มีข้อโต้แย้ง -Dkafka.logs.dir=/home/username/kafka/bin/../logs
. สิ่งนี้ไม่ควรกำหนดตัวแปรสภาพแวดล้อม kafka.logs.dir
ซึ่งใช้ในไฟล์ config/log4j2.properties
? ทำไมผู้ดูแลสวนสัตว์และคาฟคาไม่สามารถเข้าถึงสิ่งนี้ได้ $kafka.logs.dir
ตัวแปรสภาพแวดล้อม?