¿Cuál es el enfoque correcto para registrar tanto un mensaje poblado como un seguimiento de pila de la excepción?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
Me gustaría producir una salida similar a esta:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
slf4j versión 1.6.1
{}más, la cuestión del gusto ...
toString()método de los argumentos puede ser costoso. Con esta sintaxis, solo se pasa una referencia a cada objeto y toString()solo se llama al método si el mensaje en particular se está registrando. Los objetos a los que se hace referencia en una info()llamada de registro no tendrán su toString()método llamado si el nivel de registro es WARNo superior. La {}sintaxis es un recordatorio para los usuarios de que esta no es una String.format()operación similar, es decir, deben pasar objetos en lugar de representaciones de cadenas de los mismos.