Kafka 日志文件位置

Jer*_*obs 8 kafka

只是为了澄清一些事情:我说的是包含 stdout 和 stderr 消息的进程日志文件。

这是我的 systemd 单元文件:

[Unit]
Description=Apache Kafka server
Documentation=http://kafka.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
PIDFile=/var/run/kafka.pid
User=kafka
Group=kafka
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:/var/log/kafka"

ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
SyslogIdentifier=kafka

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

请注意,我添加了 KAFKA_LOG4J_OPTS 环境变量。

然而,这似乎没有任何作用。这是我尝试启动服务时的输出:

Feb 11 00:55:30 kafka01 kafka[4047]: mkdir: cannot create directory ‘/opt/kafka/bin/../logs’: Permission denied
Feb 11 00:55:30 kafka01 kafka[4047]: OpenJDK 64-Bit Server VM warning: Cannot open file /opt/kafka/bin/../logs/kafkaServer-gc.log due to No such file or directory
Feb 11 00:55:30 kafka01 kafka[4047]: log4j:WARN No appenders could be found for logger (kafka.Kafka$).
Feb 11 00:55:30 kafka01 kafka[4047]: log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)

那么,请有人告诉我更改 kafka 日志文件位置的正确方法吗?KAFKA_LOG4J_OPTS 不起作用,KAFKA_LOG_DIR 也不起作用(=我希望 kafka 实现了类似于 Zookeeper 的功能)。kafka 文档也没有告诉我。

edd*_*P23 6

对于像我这样不幸的小伙子,您需要修改LOG_DIR环境变量(已针对 Kafka 进行测试v0.11)。

如果您打开 scriptkafka-server-start/usr/bin/zookeeper-server-start,您将在底部看到它调用kafka-run-class脚本。您会在那里看到它LOG_DIR用作服务日志的文件夹(不要与 kafka 主题数据混淆)。