¿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 WARN
o 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.