Я использую простой Java проект для запуска (без фреймворка) производителя и потребителя Kafka.
Я пытаюсь контролировать журналы, генерируемые кодом KafkaProducer
и KafkaConsumer
и Я не могу повлиять на это, используя конфигурацию log4j.properties
:
log4j.rootLogger=ERROR,stdout
log4j.logger.kafka=ERROR,stdout
log4j.logger.org.apache.kafka.clients.producer.ProducerConfig=ERROR,stdout
log4j.logger.org.apache.kafka.common.utils.AppInfoParser=ERROR,stdout
log4j.logger.org.apache.kafka.clients.consumer.internals.AbstractCoordinator=ERROR,stdout
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.properties
:
[main] INFO org.apache.kafka.clients.producer.ProducerConfig - ProducerConfig values:
...
[main] INFO org.apache.kafka.clients.producer.ProducerConfig - ProducerConfig values:
...
[main] INFO org.apache.kafka.clients.producer.ProducerConfig - ProducerConfig values:
...
[main] INFO org.apache.kafka.clients.consumer.internals.AbstractCoordinator - [Consumer clientId=UM00160, groupId=string-group] (Re-)joining group
Как я могу контролировать ведение журнала клиентской библиотеки Kafka? Чего мне не хватает, чтобы связать мой log4j.properties
файл с логированием клиентской библиотеки Kafka? Чтобы не спамить вывод, я должен запустить тест Maven, используя: mvn test 2> /dev/null
. Могу ли я настроить это через log4j.properties
.
Контекст:
У меня есть следующие соответствующие файлы:
── test
├── java
│ └── com
│ └── example
│ ├── PropertyReader.java
│ └── strings
│ └── TestKafkaStringValues.java
└── resources
├── application.properties
└── log4j.properties
И я пытаюсь чтобы запустить оба TestKafkaStringValues.java
, используя подключаемый модуль Maven surefire (mvn test
) или подключаемый модуль Eclipse JUnit (эквивалентный java ...
).
Для уверенного использования в Maven pom.xml
используется следующая конфигурация:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<systemPropertyVariables>
<log4j.configuration>file:log4j.properties</log4j.configuration>
</systemPropertyVariables>
</configuration>
</plugin>
и для JUnit я использую следующий Java VM аргумент: -Dlog4j.configuration=log4j.properties
.
Я также пытался в обоих случаях использовать абсолютный путь к log4j.properties
. Все еще не работает.
Вы можете увидеть полный код здесь .