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

Scala:错误:使用log4j的替代项重载方法值信息,scala,logging,log4j,Scala,Logging,Log4j,Scala新手,尝试使用log4j计算和记录kafka记录的延迟,但遇到了错误。我试着看了一些,但我想我遗漏了一些Scala的概念。感谢您的帮助 解决方案1:不给出错误 解决方案2:这会产生错误: 获取解决方案2的以下错误: 错误:重载了方法值信息和替代项 [错误](x$1:org.slf4j.Marker,x$2:String,x$3:Object*)单位 [错误](x$1:org.slf4j.Marker,x$2:String,x$3:Any,x$4:Any)单位 [错误](x$1:Stri

Scala新手,尝试使用log4j计算和记录kafka记录的延迟,但遇到了错误。我试着看了一些,但我想我遗漏了一些Scala的概念。感谢您的帮助

解决方案1:不给出错误

解决方案2:这会产生错误:

获取解决方案2的以下错误:

错误:重载了方法值信息和替代项

[错误](x$1:org.slf4j.Marker,x$2:String,x$3:Object*)单位
[错误](x$1:org.slf4j.Marker,x$2:String,x$3:Any,x$4:Any)单位
[错误](x$1:String,x$2:Object*)单位
[错误]无法应用于(字符串、长、整数、长)
[错误]logger.info(“记录延迟:{},记录KafkaPartition:{},记录偏移量:{}”,延迟,记录.KafkaPartition(),记录.kafkaOffset())
[错误]^
[错误]发现一个错误

我以前在使用Scala时遇到过这种情况。将
.toString
添加到非字符串的日志参数将解决此问题。

可能是您的基本类型的自动装箱失败。作为一种解决方法,您可以直接使用字符串插值(
s“record latency${latency}…”
)。我认为它适用于两个参数,因为有一个重载不需要varargs。您还可以为SLF4J获得Scala包装器,这些包装器通常还支持惰性日志消息,这是一个很好的功能,因为它可以根据日志级别跳过生成消息及其输入。添加
(s“record latency${latency}…”)
没有帮助。查看SLF4J选项的Scala包装。字符串插值会出现什么错误?记住删除现在多余的额外参数。剩下的就是
logger.info(s“…”)
。哦,是的,我没有把它放对,这很有效
logger.info(s“记录延迟:${latency},记录KafkaPartition:${record.KafkaPartition()},记录偏移量:${record.kafkaOffset()}”)
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())
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())
[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