在 Windows 上重命名 Kafka 日志文件时出现 log4J(1.2.17 版本)问题

Vin*_*raj 5 windows logging log4j apache-kafka

我在 Windows 平台上运行 Kafka 版本 2.8.0,该平台又使用 log4J 版本 1.2.17。我面临下面的log4j:ERROR Failed to rename由 Log4j 在 Zookeeper 和 Kafka 服务器上引起的问题。请让我知道如何解决这个问题?

动物园管理员日志:

[ERR] [ZooKeeper] log4j:ERROR Failed to rename [C:\kafka-2.8.0/logs/controller.log] to [C:\kafka-2.8.0/logs/controller.log.2021-07-21-00].
Run Code Online (Sandbox Code Playgroud)

卡夫卡服务器日志:

log4j:ERROR Failed to rename [C:\kafka-2.8.0/logs/controller.log] to [C:\kafka-2.8.0/logs/controller.log.2021-07-21-00].
Run Code Online (Sandbox Code Playgroud)

注意: controller.log 和 server.log 文件经常发生此问题

下面是我当前正在使用的 log4J 属性文件,

log4j.properties 文件:

# Unspecified loggers and loggers with additivity=true output to server.log and stdout
# Note that INFO only applies to unspecified loggers, the log level of the child logger is used otherwise
log4j.rootLogger=INFO, stdout, kafkaAppender

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.requestAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.requestAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.requestAppender.File=${kafka.logs.dir}/kafka-request.log
log4j.appender.requestAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.requestAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.cleanerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.cleanerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.cleanerAppender.File=${kafka.logs.dir}/log-cleaner.log
log4j.appender.cleanerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.cleanerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.controllerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.controllerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.controllerAppender.File=${kafka.logs.dir}/controller.log
log4j.appender.controllerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.controllerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.authorizerAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.authorizerAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.authorizerAppender.File=${kafka.logs.dir}/kafka-authorizer.log
log4j.appender.authorizerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.authorizerAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

# Change the line below to adjust ZK client logging
log4j.logger.org.apache.zookeeper=INFO

# Change the two lines below to adjust the general broker logging level (output to server.log and stdout)
log4j.logger.kafka=INFO
log4j.logger.org.apache.kafka=INFO

# Change to DEBUG or TRACE to enable request logging
log4j.logger.kafka.request.logger=WARN, requestAppender
log4j.additivity.kafka.request.logger=false

# Uncomment the lines below and change log4j.logger.kafka.network.RequestChannel$ to TRACE for additional output
# related to the handling of requests
#log4j.logger.kafka.network.Processor=TRACE, requestAppender
#log4j.logger.kafka.server.KafkaApis=TRACE, requestAppender
#log4j.additivity.kafka.server.KafkaApis=false
log4j.logger.kafka.network.RequestChannel$=WARN, requestAppender
log4j.additivity.kafka.network.RequestChannel$=false

log4j.logger.kafka.controller=TRACE, controllerAppender
log4j.additivity.kafka.controller=false

log4j.logger.kafka.log.LogCleaner=INFO, cleanerAppender
log4j.additivity.kafka.log.LogCleaner=false

log4j.logger.state.change.logger=INFO, stateChangeAppender
log4j.additivity.state.change.logger=false

# Access denials are logged at INFO level, change to DEBUG to also log allowed accesses
log4j.logger.kafka.authorizer.logger=INFO, authorizerAppender
log4j.additivity.kafka.authorizer.logger=false
Run Code Online (Sandbox Code Playgroud)

Har*_*vey 7

正如 @OneCricketeer 建议的那样,您应该将路径从 更改/\\

在配置文件中使用 2 个反斜杠:

C:\kafka\config\zookeeper.properties中:

dataDir=c:\\kafka\\zookeeper
Run Code Online (Sandbox Code Playgroud)

并在C:\kafka\config\server.properties中:

log.dirs=c:\\kafka\\kafka-logs
Run Code Online (Sandbox Code Playgroud)

还要转到C:\kafka\config\log4j.properties

无论你在哪里看到这样的东西:

log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
Run Code Online (Sandbox Code Playgroud)

改成这样:

log4j.appender.kafkaAppender.File=${kafka.logs.dir}\\server.log
Run Code Online (Sandbox Code Playgroud)

这些都是您应该更改的地方:

Line 26: log4j.appender.kafkaAppender.File=${kafka.logs.dir}\\server.log
Line 32: log4j.appender.stateChangeAppender.File=${kafka.logs.dir}\\state-change.log
Line 38: log4j.appender.requestAppender.File=${kafka.logs.dir}\\kafka-request.log
Line 44: log4j.appender.cleanerAppender.File=${kafka.logs.dir}\\log-cleaner.log
Line 50: log4j.appender.controllerAppender.File=${kafka.logs.dir}\\controller.log
Line 56: log4j.appender.authorizerAppender.File=${kafka.logs.dir}\\kafka-authorizer.log
Run Code Online (Sandbox Code Playgroud)