Tengo esta configuración:
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>
recursos / 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
Cuando se inicia mi consumo Kafka usando org.apache.kafka.clients.consumer.KafkaConsumer
, es el registro en el INFO
nivel. Cualquier nuevo registrador que crean usando LogManager.getLogger(name)
honor a la configuración y los registros a nivel ERROR
, por lo que sé que el log4j2.properties
archivo está siendo cargado y utilizado. Kafka parece ignorar que aunque. En los registros, cuando el consumidor Kafka se está iniciando, veo esta línea poco tiempo:
Aug 20, 2018 11:03:37 PM org.apache.kafka.common.utils.LogContext$KafkaLogger info
Cualquier ayuda apreciada!
Kafka registra a través de SLF4J. Si desea utilizar Log4j2, tiene que configurar los dos a trabajar juntos (añadiendo la aplicación SLF4J proporcionada por Log4j2):
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.1</version>
</dependency>
Sin esto, la salida del registro de SLF4J utilizará algún otro backend (asegúrese de retirar que uno, no debe tener ningún otro slf4j-impl en su ruta de clase) e ignorar la configuración Log4j2.