Scala:错误:使用log4j的替代项重载方法值信息

emeijp43  于 2023-03-12  发布在  Scala
关注(0)|答案(2)|浏览(149)

Scala新手,尝试使用log4j计算和记录我的Kafka记录的延迟,但是遇到了错误。尝试查看一些SO articles,但是我想我错过了一些Scala概念。任何帮助都是非常感谢的。

  • 解决方案1:不给予错误。*
val currentTimeInMillis = Instant.now.toEpochMilli
val latency = Math.max(0, currentTimeInMillis - record.timestamp())
logger.info("record latency: {}", latency)
logger.info("record KafkaPartition: {}, record Offset: {}", record.kafkaPartition(), record.kafkaOffset())
  • 解决方案2:这会产生错误:*
val currentTimeInMillis = Instant.now.toEpochMilli
val latency = Math.max(0, currentTimeInMillis - record.timestamp())
logger.info("record latency: {}, record KafkaPartition: {}, record Offset: {}", latency, record.kafkaPartition(), record.kafkaOffset())
  • 获取解决方案2的以下错误:*

错误:重载了具有替代项的方法值信息

[ERROR]   (x$1: org.slf4j.Marker,x$2: String,x$3: Object*)Unit <and>
[ERROR]   (x$1: org.slf4j.Marker,x$2: String,x$3: Any,x$4: Any)Unit <and>
[ERROR]   (x$1: String,x$2: Object*)Unit
[ERROR]  cannot be applied to (String, Long, Integer, Long)
[ERROR] logger.info("record latency: {}, record KafkaPartition: {}, record Offset: {}", latency, record.kafkaPartition(), record.kafkaOffset())
[ERROR]                  ^
[ERROR] one error found
bt1cpqcv

bt1cpqcv1#

我以前在Scala中遇到过这个问题,在日志参数中添加.toString可以解决这个问题。

w46czmvw

w46czmvw2#

或者,您可以执行以下操作:

logger.info("record latency: {}, record KafkaPartition: {}, record Offset: {}", latency: java.lang.Long, record.kafkaPartition(): Integer, record.kafkaOffset(): java.lang.Long)

以绕过类型限制。

相关问题