¿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 ytoString()
solo se llama al método si el mensaje en particular se está registrando. Los objetos a los que se hace referencia en unainfo()
llamada de registro no tendrán sutoString()
método llamado si el nivel de registro esWARN
o superior. La{}
sintaxis es un recordatorio para los usuarios de que esta no es unaString.format()
operación similar, es decir, deben pasar objetos en lugar de representaciones de cadenas de los mismos.Respuestas:
A partir de SLF4J 1.6.0, en presencia de múltiples parámetros y si el último argumento en una declaración de registro es una excepción, SLF4J supondrá que el usuario desea que el último argumento sea tratado como una excepción y no como un parámetro simple. Consulte también la entrada relevante de preguntas frecuentes .
Entonces, escribir (en SLF4J versión 1.7.xy posterior)
o escribiendo (en SLF4J versión 1.6.x)
rendirá
El resultado exacto dependerá del marco subyacente (por ejemplo, logback, log4j, etc.) y de cómo se configura el marco subyacente. Sin embargo, si el último parámetro es una excepción, se interpretará como tal independientemente del marco subyacente.
fuente
Logger
clase javadoc: slf4j.org/apidocs/org/slf4j/Logger.htmlAdemás de la respuesta de @Ceki, si está utilizando el inicio de sesión y configura un archivo de configuración en su proyecto (generalmente logback.xml), también puede definir el registro para trazar el seguimiento de la pila utilizando
el% ex en el patrón es lo que hace la diferencia
fuente