12
我一定很笨,但我似乎不能使用SLF4J的參數化日誌記錄方法。 一個例子:使用可變參數化方法的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);
}
}
}
在測井方法,蝕產生這樣的警告:
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,如果有區別的話。
如果有人會指出我的思維能力的缺點,它將非常感激!
您的字符串3個佔位符,但4個參數 - 這是故意的? – fge
是的:http://slf4j.org/faq.html#paramException – Manjabes
我認爲[這個答案](http://stackoverflow.com/a/7689819/1523342)很好地解釋它。 – mthmulders