使用slf4j打印数组仅打印第一个元素

Pav*_*l_K 13 java 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
Run Code Online (Sandbox Code Playgroud)

使用slf4j打印数组的完整内容的正确方法是什么?

Tun*_*aki 27

问题是使用以下代码

logger.info("The string was split into <{}>", splits);
Run Code Online (Sandbox Code Playgroud)

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

但是,在这种情况下,您希望将数组作为第一个参数传递.一个简单的解决方法是将其转换为Object.

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

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