Qual è l'approccio corretto per registrare sia un messaggio popolato sia una traccia dello stack dell'eccezione?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Vorrei produrre un output simile a questo:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j versione 1.6.1
{}più, la questione del gusto ...
toString()metodo degli argomenti potrebbe essere costoso. Con questa sintassi, viene passato solo un riferimento a ciascun oggetto e il toString()metodo viene chiamato solo se il particolare messaggio viene effettivamente registrato. Gli oggetti a cui fa riferimento una info()chiamata di registro non avranno il loro toString()metodo chiamato se il livello di registro è WARNo superiore. La {}sintassi ricorda agli utenti che questa non è un'operazione String.format()analoga, ovvero che devono passare oggetti anziché rappresentazioni di stringhe.