使用 slf4j 打印数组只打印第一个元素
Printing an array with slf4j only prints the first element
我有以下代码:
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 打印数组全部内容的正确方法是什么?
问题在于以下代码
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]
。
我遇到了一个奇怪的问题,即为第一个占位符记录了整个参数列表
例如:
log.info("Initializing Service. arg1={}, arg2={}, pid={}", arg1, arg2, arg3);
记录以下内容:
初始化服务。 build=[123456, main, 77378], branch=null, pid={}
我有以下代码:
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 打印数组全部内容的正确方法是什么?
问题在于以下代码
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]
。
我遇到了一个奇怪的问题,即为第一个占位符记录了整个参数列表 例如: log.info("Initializing Service. arg1={}, arg2={}, pid={}", arg1, arg2, arg3);
记录以下内容: 初始化服务。 build=[123456, main, 77378], branch=null, pid={}