给定多个(> 2)参数时Scala slf4j记录问题

时间:2016-09-16 17:18:07

标签: scala logging slf4j

val LOG = LoggerFactory.getLogger(this.getClass.getSimpleName)
LOG.info("This log works {} {} ", 1, 2)
LOG.info("This log fails {} {} {} ", 1, 2, 3)

编译错误: 用替代方法重载方法值信息:(x $ 1:org.slf4j.Marker,x $ 2:String,x $ 3:Object *)单位(x $ 1:org.slf4j.Marker,x $ 2:字符串,x $ 3:任意,x 4美元:任何)单位(x $ 1:字符串,x $ 2:对象*)单位不能应用于(String,Int,Int,Int)

我正在使用slf4j-log4j12 + slf4j-api进行记录。

1 个答案:

答案 0 :(得分:1)

Int到Object的装箱转换不是隐式完成的。

您可以明确强制(42: Integer)

此外,在Scala中调用getSimpleName是危险的,因为Scala以可能引发异常的方式对类名进行编码。这是一个已知问题,会影响不是顶级的类;只是避免它更安全。