网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > Routers配置

Scala log4j中的参数化替换是否需要空字符串?

Scala log4j中的参数化替换是否需要空字符串?

scala apache-spark

Scala log4j中的参数化替换是否需要空字符串?,scala,apache-spark,slf4j,Scala,Apache Spark,Slf4j,这不符合我的预期: ./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) sca

这不符合我的预期:

./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 这里有什么不对吗?

它实际上不需要空字符串,但至少需要3个参数或类型转换。事实上,有两种重载方法与该公司相匹配,这两种方法在这里显示。因此,如果您需要放置除2之外的任意数量的项目,那么一切都将按照您的预期工作。在这种特殊情况下,对于两个对象,可以执行以下操作之一:

插入第三个参数,以便第二个实数((x$1:String,x$2:Object*)单位)匹配,如您所说(第三个参数将被忽略)

将这两个参数强制转换为Any,这样将匹配第一个公司(通过键入LOGGER.warn(“something{},something{}”,v1:Any,v2:Any))

它实际上不需要空字符串,但至少需要3个参数或类型转换。事实上,有两种重载方法与该公司相匹配,这两种方法在这里显示。因此,如果您需要放置除2之外的任意数量的项目,那么一切都将按照您的预期工作。在这种特殊情况下,对于两个对象,可以执行以下操作之一:

插入第三个参数,以便第二个实数((x$1:String,x$2:Object*)单位)匹配,如您所说(第三个参数将被忽略)

将这两个参数强制转换为Any,这样将匹配第一个公司(通过键入LOGGER.warn(“something{},something{}”,v1:Any,v2:Any))

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

(责任编辑:admin)