¿Cuál es el enfoque correcto para registrar tanto un mensaje poblado como un seguimiento de pila de la excepción?slf4j: cómo registrar un mensaje formateado, conjunto de objetos, excepción
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
me gustaría para producir una salida similar a esto:
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
He intentado con 1.6.1 y la salida se muestra a continuación. Tenga en cuenta que falta el rastro de la pila: ' 2011-06-16 17: 20: 57,570 DEPURACIÓN [principal] SLF4JDemo.main (12): información de contexto uno dos tres: 1 2 3 java.lang.Exception: algo salió mal ' – rowe
¿Qué estructura de registro subyacente estás usando? Como mencioné en mi respuesta anterior, si el último parámetro es una excepción, se interpretará como tal independientemente del marco subyacente. (Probado con logback, slf4j-log4j12, slf4j-jdk14 y slf4j-simple.) – Ceki
Lo siento, no reconocí que en su ejemplo utilizó n = 3 marcadores de posición en el formato de cadena y n + 1 = 4 elementos en la matriz de objetos . Tenía n marcadores de posición en la cadena de formato y también n elementos en la matriz de objetos más una excepción como tercer parámetro. Mi expectativa era que la excepción se imprimiría con stacktrace, pero esto nunca sucedió. ¿Funciona esto como se diseñó? Además, si tengo n marcadores de posición y n elementos en la matriz de objetos, con la excepción de que es el último elemento, no veo ningún stacktrace. Tal vez los n placeholders con n + 1 objetos en una matriz deberían enfatizarse un poco más. – rowe