2012-02-25 18 views
6

Quiero registrar XML "bastante impreso" usando Logback/SLF4J. En este momento, lo que obtengo en los registros es totalmente ilegible y tengo que abrir algo para analizarlo. Quiero poder configurar el registro para la depuración (porque quiero ver XML solo en la depuración) para generar XML de una manera legible para los humanos.Cómo registrar texto de líneas múltiples en Logback/SLF4J?

¿Es posible?

Respuesta

9

Basta con añadir una nueva línea \n en la declaración de registro:

log.info("Message id: {}\nContents: {}", id, xml); 

ACTUALIZACIÓN: Con el fin de XML bastante impresión echar un vistazo a: How to pretty print XML from Java?. Una cosa a tener en cuenta es que no es necesario realizar un formateo costoso si el XML no se va a imprimir realmente. Por lo tanto, este es uno de los pocos casos en los que se debe usar is*Enabled():

if(log.isInfoEnabled()) 
    log.info("Message: {}", prettyFormat(xml)); 
+0

Bueno, esto simplemente creará 2 líneas. Uno con id y otro con xml. Eso no es realmente una bonita impresión ;-) – Krystian

+0

@Krystian: lo siento, te he entendido mal. Eche un vistazo a mi respuesta actualizada. –

+0

Uhh .. He cometido un error fatal. Sabía que en respuesta obtengo un bonito XML impreso, sin embargo, parece que el lector que solía obtener la respuesta estaba eliminando todos los caracteres de nueva línea. En realidad, no era un problema de registro. Una vez que cambié el código para pasar la respuesta original al registrador, todo comenzó a funcionar bien. He marcado su respuesta como la correcta porque para las personas que obtienen un xml sin procesar, funcionará perfectamente. Gracias. – Krystian

Cuestiones relacionadas