禁用SLF4J登录apache Kafka

问题描述 投票:2回答:1

我在Apache Kafka上记录SLF4J时遇到问题。我想使用与Apache Kafka相关的Tomcats Servlet Container Catalina。我的Java应用程序必须集成到Camunda的BPM流程中。到目前为止,Java编码的集成也起了作用 - 没有Apache Kafka Producer的集成。如果我将其集成到Camunda进程中,我会收到此错误:

java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/apache/catalina/loader/ParallelWebappClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of java/net/URLClassLoader) for the method's defining class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type org/slf4j/ILoggerFactory used in the signature
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:418)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
at org.apache.kafka.clients.CommonClientConfigs.<clinit>(CommonClientConfigs.java:32)
at org.apache.kafka.clients.producer.ProducerConfig.<clinit>(ProducerConfig.java:305)
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:304)

据我了解错误,Camunda和Apache Kafka试图调用SLF4J记录器,不是吗?但就我而言,我需要Camunda记录器。所以我想禁用Apache Kafka日志来解决这个问题。到目前为止,我的简单Kafka Producer看起来像这样:

        String topicName = "camunda";
    String test = "test123";
     Properties props = new Properties();
      props.put("bootstrap.servers", "localhost:9092,localhost:9093");
      props.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");         
      props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

      Producer<String, String> producer = new KafkaProducer <>(props);
      ProducerRecord<String, String> record = new ProducerRecord<>(topicName,test);
      producer.send(record);
      producer.close();

有没有办法解决这个问题?不幸的是,我找不到关于如何禁用Kafka Logger的任何条目,或者是其他地方的问题?

提前谢谢了

java apache-kafka slf4j kafka-producer-api
1个回答
2
投票

禁用SFL4J-Logger for Apven Kafka的Maven依赖的方法对我来说很好。我改变了我的pom文件如下:

<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.0.0</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
        </exclusion>
     </exclusions>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.