【问题标题】:console log4j2 kafka: No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$)控制台 log4j2 kafka:找不到记录器的附加程序(kafka.utils.Log4jControllerRegistration$)
【发布时间】:2020-08-08 14:10:25
【问题描述】:

我试图通过console 简单地获得Kafka logging,但在安装我的软件后,我一直看到这个错误。

我的log4j2.xml

https://pastebin.com/gqyN1Fsi

我的pom.xml 包含此依赖项:

[INFO] +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.12.:compile
[INFO] |  +- org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
[INFO] |  \- org.apache.logging.log4j:log4j-core:jar:2.12.1:runtime
[INFO] +- org.apache.logging.log4j:log4j-api-scala_2.12:jar:11.0:compile

我的主类是一个非常简单的消费者:

   class Consumer(val brokers: String,
              val groupId: String,
              val topic: String) extends Logging {
 

 val props: Properties = createConsumerConfig(brokers, groupId)
 val consumer: KafkaConsumer[String, User] = new KafkaConsumer[String, User](props)
 var executor: ExecutorService = _

 def shutdown() = {
   if (consumer != null)
     consumer.close()
   if (executor != null)
     executor.shutdown()
 }

 def createConsumerConfig(brokers: String, groupId: String): Properties = {
   val props = new Properties()
   props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers)
   props.put(ConsumerConfig.GROUP_ID_CONFIG, groupId)
   props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, "true")
   props.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, "1000")
   props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, "30000")
   props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringDeserializer")
   props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, "kafka.UserDeserializer")
   props
 }


 def run(): Unit = {
   consumer.subscribe(Collections.singletonList(this.topic))

   Executors.newSingleThreadExecutor.execute(() => {
     while (true) {
       val records: ConsumerRecords[String, User] = consumer.poll(ofMillis(1000))
       records
         .forEach(r => {
           
           logger.info("Received message: (" + r.key() + ", " + r.value() + ") at offset " + r.offset())
         })
     }
   })
 }

所以,当我通过命令行java -jarpackage 我的应用和run 时,前几行是:

log4j:WARN No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我做错了什么?我尝试了很多依赖版本组合,并尝试将我的log4j2.xml 更改为log4j2.properties,但我从未设法注册此logger

请教我如何实现最简单的日志!

【问题讨论】:

    标签: scala maven logging apache-kafka log4j2


    【解决方案1】:

    试试这个,很简单

    maven dependency

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.7.25</version>
            </dependency>
    

    在您的代码中导入

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    

    初始化你的日志

        private void run() {
            // logger
            Logger logger = LoggerFactory.getLogger(ConsumerDemoWithThread.class.getName());
    

    使用日志跟踪流程

           // add a shutdown hook
            Runtime.getRuntime().addShutdownHook(new Thread( () -> {
                logger.info("Caught shutdown hook"); // log
                ((ConsumerRunnable) myConsumerRunnable).shutdown();
                try {
                    latch.await();
                } catch(InterruptedException e) {
                    e.printStackTrace();
                }
                logger.info("Application has exited"); // log
            }));
    
            try {
                latch.await();
            } catch(InterruptedException e) {
                logger.error("Application got interrupted", e); // log
            } finally {
                logger.info("Application is closing");  // log
            }
        }
    

    我希望它能给你一些线索。问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2014-11-17
      • 2017-05-30
      • 1970-01-01
      相关资源
      最近更新 更多