1
./spark-shell
scala> import org.slf4j.{Logger, LoggerFactory}
import org.slf4j.{Logger, LoggerFactory}
scala> val LOGGER = LoggerFactory.getLogger("testing")
LOGGER: org.slf4j.Logger = org.slf4j.impl.Log4jLoggerAdapter(testing)
scala> val v1 = "1"
v1: String = 1
scala> val v2 = "2"
v2: String = 2
これは私が期待どおりに動作しません:log4jのパラメータ化された置換は空の文字列を必要としますか?
scala> LOGGER.warn("something {}, something {}", v1, v2)
<console>:30: error: ambiguous reference to overloaded definition,
both method warn in trait Logger of type (x$1: String, x$2: Any, x$3: Any)Unit
and method warn in trait Logger of type (x$1: String, x$2: Object*)Unit
match argument types (String,String,String)
LOGGER.warn("something {}, something {}", v1, v2)
^
しかし、この処理が行われます。
scala> LOGGER.warn("something {}, something {}", v1, v2, "")
16/05/30 10:16:59 WARN testing: something 1, something 2
は、私がここでやっている何か問題はありますか?