Java 在apache Kafka中禁用SLF4J日志记录
我在Apache Kafka上记录SLF4J时遇到问题。我想在ApacheKafka中使用Tomcats Servlet容器Catalina。我的Java应用程序必须从Camunda集成到BPM流程中。到目前为止,Java编码的集成也很有效——没有集成ApacheKafka生产者。如果我将其集成到Camunda流程中,我会得到以下错误:Java 在apache Kafka中禁用SLF4J日志记录,java,apache-kafka,slf4j,kafka-producer-api,Java,Apache Kafka,Slf4j,Kafka Producer Api,我在Apache Kafka上记录SLF4J时遇到问题。我想在ApacheKafka中使用Tomcats Servlet容器Catalina。我的Java应用程序必须从Camunda集成到BPM流程中。到目前为止,Java编码的集成也很有效——没有集成ApacheKafka生产者。如果我将其集成到Camunda流程中,我会得到以下错误: java.lang.LinkageError: loader constraint violation: when resolving method "org.
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)
据我所知,卡蒙达和阿帕奇·卡夫卡正在尝试调用SLF4J记录器,不是吗?
但就我而言,我需要卡蒙达记录器。所以我想禁用ApacheKafka日志来解决这个问题。
到目前为止,我的简单卡夫卡制作人如下所示:
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();
有没有办法解决这个问题?不幸的是,我找不到任何关于如何禁用卡夫卡记录器的条目,或者问题出在其他地方
提前非常感谢禁用SFL4J Logger以实现对ApacheKafka的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>
slf4j只是一个真正日志框架的门面。例如,Kafka代理使用Log4J,因此您需要找到这个Camuda的配置,并找出如何从那里调优日志级别/包。或者,例如,在Maven中,您可以将sl4jj从kafka客户端库中排除。我不确定哪一个应用于您的用例,但请随意展示您提出的解决方案,下面是我完全禁用kafka日志记录的答案: