Kafka 3.0.0修改log4j.properties调整类日志级别不生效如何解决
Kafka 3.0 日志级别配置不生效解决方案
根因说明
Kafka 从2.8版本开始默认日志框架已从Log4j 1.x升级为Log4j 2.x,你修改的log4j.properties是Log4j 1.x的配置文件,对默认启用的Log4j2无效,因此会出现配置后DEBUG日志仍持续输出的问题。
解决方案
方案1:修改Log4j2配置文件(推荐,长期生效)
Kafka 3.0默认使用config/log4j2.properties作为日志配置文件,你只需在该文件中添加对应类的级别配置即可:
# 配置kafka.cluster.Partition类只输出INFO及以上级别日志 logger.partition.name = kafka.cluster.Partition logger.partition.level = INFO logger.partition.additivity = false # 其他冗余日志类可参考下方格式批量配置 logger.networkClient.name = org.apache.kafka.clients.NetworkClient logger.networkClient.level = INFO logger.networkClient.additivity = false logger.fetchSessionHandler.name = org.apache.kafka.clients.FetchSessionHandler logger.fetchSessionHandler.level = INFO logger.fetchSessionHandler.additivity = false logger.logCleanerManager.name = kafka.log.LogCleanerManager logger.logCleanerManager.level = INFO logger.logCleanerManager.additivity = false
修改配置后重启Kafka服务即可生效,该方案仅调整日志输出级别,不依赖appender配置,符合你的需求。
方案2:动态调整日志级别(无需重启,临时生效)
如果是线上环境不方便重启服务,可以使用Kafka自带的工具动态调整日志级别,即时生效:
./bin/kafka-configs.sh --bootstrap-server <你的Kafka broker地址:端口> --entity-type brokers --entity-name <目标broker的ID> --alter --add-config 'log4j.logger.kafka.cluster.Partition=INFO'
如需调整其他类的日志级别,修改命令中类名和对应级别即可。
方案3:强制使用Log4j 1.x配置(兼容旧有配置场景)
如果你需要沿用现有Log4j 1.x的配置文件,可在Kafka启动的JVM参数中添加如下配置,指定加载旧版Log4j配置:
-Dlog4j.configuration=file:/你的配置文件绝对路径/log4j.properties
需确保Kafka运行的classpath中存在Log4j 1.x的核心依赖,而非Log4j2提供的log4j-1.2-api桥接包。
内容的提问来源于stack exchange,提问作者radumanolescu
相关产品推荐
相关产品推荐

