我可能很愚蠢,但我好像无法使用SLF4J的可变参数化日志记录方法。一个例子:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggingTest {
@Test
public void loggingTest() {
Logger logger = LoggerFactory.getLogger(this.getClass());
int x = 0xdeadbeef;
long y = 0xdeadbeef;
try {
throw new Exception("This is a mighty exception!");
} catch(Exception e) {
logger.error("I wanna log {} and {} and {} with backtrace", x, y, 3, e);
}
}
}
在日志记录方法上,Eclipse 会产生如下警告:
The method error(String, Object, Object) in the type Logger is not applicable for the arguments (String, int, long, int, Exception)
但是,如果我将日志调用更改为:
logger.error("I wanna log {} and {} and {} with backtrace", new Object[]{x, y, 3, e});
代码可以按预期编译和运行(记录了 3 个“变量”和异常堆栈跟踪)。
库的版本为:slf4j-api-1.7.5.jar、slf4j-log4j12-1.7.5.jar 和 log4j-1.2.14.jar,如果有任何差异,请告知。
如果有人指出我的思维能力有所欠缺,我将不胜感激!