Я установил предварительную версию 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
переменная окружения?