我试图Kafka
简单地logging
通过console
,但是在安装我的软件后,我只会继续看到此错误。
我的log4j2.xml
:
我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())
})
}
})
}
因此,当我使用package
我的应用程序并run
通过命令行时java -jar
,前几行是:
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
:
请建议我实现最简单日志的方法!
试试这个,很简单
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
}
}
我希望它会为您提供一些线索。问候。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句