我有以下代码:
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打印数组的完整内容的正确方法是什么?
答案 0 :(得分:24)
问题在于使用以下代码
logger.info("The string was split into <{}>", splits);
您正在调用方法info(String format, Object... arguments)
。请注意,最后一个参数是varargs。因此,您传递的数组将被解释为变量参数的每个参数。
但是,在这种情况下,您希望将数组作为第一个参数传递。一个简单的解决方法是将其强制转换为Object
。
String[] splits = { "foo", "bar" };
logger.info("The string was split into {}", (Object) splits);
将按预期记录The string was split into [foo, bar]
。
答案 1 :(得分:0)
我面临一个奇怪的问题,即为第一个占位符记录了整个参数列表 例如: log.info(“正在初始化服务。arg1= {},arg2 = {},pid = {}”,arg1,arg2,arg3);
记录以下内容: 初始化服务。 build = [123456,main,77378],branch = null,pid = {}