2016-09-20 49 views
8

我有以下代码:印刷与SLF4J数组只打印第一要素

private static final Logger logger = LoggerFactory.getLogger(Some.class); 
... 
String[] splits=someString.split(".."); 
logger.info("The string was split into <{}>",splits); // prints first element 

什么是打印与SLF4J阵列的全部内容,正确的方法是什么?

+1

@ JimJim2000打印数组的方式很好,slf4j(如果由log4j,logback或任何其他实现支持)将输出数组的内容。因此,您需要告诉我们“不工作”的意思。你看到任何slf4j消息吗?任何输出?你知道['String#split()'](http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-)你调用的方法接受一个正则表达式,那个“..”是一个有意义的正则表达式? –

回答

14

的问题是,用下面的代码

logger.info("The string was split into <{}>", splits); 

要调用的方法info(String format, Object... arguments)。请注意,最后一个参数是可变参数。因此,您传递的数组被解释为变量参数的每个参数。

但是,在这种情况下,您想要传递一个数组作为第一个参数。一个简单的解决方法是将其投射到Object

String[] splits = { "foo", "bar" }; 
logger.info("The string was split into {}", (Object) splits); 

将按照预期记录The string was split into [foo, bar]

+0

Ohhhhh!是的,就是这样。 –