在Java中,当使用一些有意义的信息记录多个变量时,我倾向于使用类似的东西:
logger.debug("Comparing A["+i+"] = "+A[i]+", with B["+j+"] = "+B[j]+" --> "+A[i]==B[j]);
我想知道是否有一种更简单,更清洁的方法,让我们这样说:
logger.debug("Comparing A[@i] = @A[i], with B[@j] = @B[j] --> @(A[i]==B[j]));
答案 0 :(得分:3)
有String.format
,但它要求您将表达式移到行外:
logger.debug(String.format("Comparing A[%d] = %d, with B[%d] = %d --> %b", i, A[i], j, B[j], A[i] == B[j]));
除此之外,不,没有。
答案 1 :(得分:2)
或者,如果您使用Logback,它会提供具有以下签名的方法(类似于所有日志级别)
debug(String format, Object[] args)
可以用作
logger.debug("Hello. I am a {}", msg);
答案 2 :(得分:1)
如果您使用log4j
,还可以使用{}
作为占位符:
logger.debug("Comparing A[{}] = {}, with B[{}] = {} --> {}",
i, A[i], j, B[j], A[i]==B[j]);
你可以看到它here。
答案 3 :(得分:0)
看一下java.text.MessageFormat课程。 此类具有Format方法,可以帮助您将参数分配给{Number}占位符...
例如:
logger.debug(MessageFormat.Format("hello {0} {1}", "john","smith"));