2014-03-07 80 views
1

以下是執行日誌記錄的幾種方法。 使用SLF4J:格式化日誌記錄的正確方法

什麼是最好的/正確的方法來做到這一點?

log.debug(John + " has " + number +" apples with him"); 
log.debug("{} has {} apples with him", John, number); 
log.debug(format("%s has %d apples with him", John, number)); 
+0

'格式'無論發生什麼都會發生。 IIRC記錄器格式只有在啓用時纔會發生。去第二個選項。 –

+0

啊,我看到謝謝。是否由slf4j處理'{}'而不是外部記錄器? –

+0

不,它應該由實際的實現來處理,但我相信它是規範的一部分,因此它需要在檢查後執行。再次,如果我沒有記錯的話。 –

回答

1

第二個選項,

log.debug("{} has {} apples with him", John, number); 

是 「正確」 的方式做到這一點。

引入了參數化日誌記錄以避免消息甚至未啓用時計算格式化字符串的開銷。這要求您將格式說明和必要的參數傳遞給記錄器。記錄器僅在啓用時完成格式化操作。

另外兩個選項搶先格式化消息,即使它不會被記錄。

+0

是否所有記錄器都支持'{}'調用? –

+0

@StenKin sfl4j採伐者應該。 –