java—为什么ApacheKafka使用者不使用log4j2根记录器?

xuo3flqw  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(375)

我有这个配置:

pom.xml文件

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.11.1</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.11.1</version>
</dependency>

<dependency>
  <groupId>org.apache.kafka</groupId>
  <artifactId>kafka-clients</artifactId>
  <version>1.0.1</version>
</dependency>

资源/log4j2.properties

name=PropertiesConfig
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
rootLogger.level = ERROR
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

当我开始我的Kafka消费使用 org.apache.kafka.clients.consumer.KafkaConsumer ,正在登录 INFO 水平。任何我用 LogManager.getLogger(name) 在级别上执行配置和日志 ERROR 所以我知道 log4j2.properties 正在加载和使用文件。不过,Kafka似乎忽略了这一点。在日志中,当Kafka消费者启动时,我看到了几行: Aug 20, 2018 11:03:37 PM org.apache.kafka.common.utils.LogContext$KafkaLogger info 感谢您的帮助!

mzaanser

mzaanser1#

Kafka日志通过slf4j。如果要使用log4j2,必须将两者配置为协同工作(通过添加log4j2提供的slf4j实现):

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.11.1</version>
</dependency>

否则,slf4j的日志输出将使用其他后端(请确保删除该后端,类路径上不应有任何其他slf4j impl)并忽略log4j2配置。

相关问题