我有此配置:
<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>
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
当我使用org.apache.kafka.clients.consumer.KafkaConsumer
启动我的Kafka用户时,它的登录级别为INFO
。我使用LogManager.getLogger(name)
创建的任何新记录器都将遵循配置并以ERROR
级别登录,因此我知道log4j2.properties
文件正在加载和使用。卡夫卡似乎却忽略了它。在日志中,当Kafka用户启动时,我会看到以下行:
Aug 20, 2018 11:03:37 PM org.apache.kafka.common.utils.LogContext$KafkaLogger info
任何帮助表示赞赏!
答案 0 :(得分:5)
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配置。