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[])
Cancella. Quindi rimanda solo la costruzione di stringhe e non la valutazione di argomenti. – Linuslabo