Я установил предварительную версию 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, чтобы использовался log4j 2.17.
Однако есть одна странность: все журналы log4j хранятся в каталоге, буквально называемом ${kafka.logs.dir} в домашнем каталоге. Сборщик мусора успешно сохраняет журналы в правильном месте. ~/Кафка/журналы. Итак, каталог ~/Кафка/журналы содержит такие файлы, как kafkaServer-gc.log.0.current, а уморительно странный каталог ~/${kafka.logs.dir} содержит сервер.лог, контроллер.log, и т.д.
Глядя на процессы для kafka и zookeeper, я вижу, что у них обоих есть аргумент -Dkafka.logs.dir=/home/username/kafka/bin/../logs. Разве это не должно определять переменную среды kafka.logs.dir, который используется в файле конфиг/log4j2.properties? Почему Zookeeper и Kafka, по-видимому, не имеют доступа к этому? $kafka.logs.dir переменная окружения?