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
有什麼問題,我在這裏做什麼?