2015-08-24 10 views

risposta

11

Credo che quello che significa Log4j, è che con le parentesi graffe, evitano la costruzione di una stringa quando non è necessario (ad esempio, il livello non è Debug):

Con

logger.debug("Entry number: " + i + " is " + String.valueOf(entry[i])); 

La stringa viene sempre calcolata anche quando non è stata registrata.

con

logger.debug("Entry number: {} is {}", i, entry[i]); 

Log4j possibile controllare il registro a livello di prima e poi decidere se vale la pena di costruire il Message-String.

Log4j utilizza una classe interna (org.slf4j.helpers.MessageFormatter) che sostituisce ogni {} con gli argomenti forniti. È possibile dare un'occhiata al codice Sourcec in org.slf4j.impl.Log4jLoggerAdapter.debug(String, Object[])

+2

Cancella. Quindi rimanda solo la costruzione di stringhe e non la valutazione di argomenti. – Linuslabo