En Log4J, Slf4J y un par de otras estructuras de registro en Java, tienes dos niveles de "desarrollador" para el registro:
- DEBUG
- RASTREO
Entiendo lo que DEBUG hace, porque la explicación es clara:
El nivel DEBUG designa eventos informativos detallados que son más útiles para depurar una aplicación.
Pero el nivel TRACE no es muy específico sobre su caso de uso:
El nivel TRACE designa eventos informativos más detallados que DEBUG
(Fuente: log4J JavaDoc )
Esto no me dice cómo o cuándo usar TRACE. Curiosamente, este no es un nivel de gravedad definido en el estándar de syslog . Buscar en Google la diferencia entre TRACE y DEBUG solo parece devolver "use DEBUG, oh, y TRACE también". No pude encontrar un caso de uso específico para el nivel TRACE. Lo mejor que pude encontrar fue esta antigua página wiki debatiendo el mérito de la existencia del nivel.
Esto, como arquitecto, plantea muchas banderas y preguntas en mi cabeza. Si un desarrollador joven me pidiera que agregue TRACE a mi arquitectura, lo bombardearía con preguntas:
- ¿Cuáles son algunos ejemplos de información que debe registrarse con TRACE y no con DEBUG?
- ¿Qué problema específico resuelvo al registrar esa información?
- En esos ejemplos, ¿cuáles son las propiedades de la información registrada que claramente discrimina entre el registro en el nivel TRACE en lugar del nivel DEBUG?
- ¿Por qué esa información debe pasar por la infraestructura de registro?
- ¿Cuáles son los beneficios de conservar esa información en un diario de registros en lugar de simplemente usar
System.out.println
? - ¿Por qué es mejor usar el registro para esto en lugar de un depurador?
- ¿Cuáles son los beneficios de conservar esa información en un diario de registros en lugar de simplemente usar
- ¿Cuál sería un ejemplo canónico de registro en el nivel TRACE?
- ¿Cuáles son los beneficios específicos que se han logrado al iniciar sesión en el nivel TRACE en lugar de DEBUG en el ejemplo?
- ¿Por qué son importantes esas ganancias?
- A la inversa: ¿Qué problemas evité al iniciar sesión en TRACE en lugar de DEBUG?
- ¿De qué otra manera podría resolver esos problemas? ¿Por qué el registro en el nivel TRACE es mejor que esas otras soluciones?
- ¿Se debe dejar la instrucción de registro de nivel TRACE en el código de producción? ¿Por qué?
Pero dado que está presente en el marco más importante, ¿supongo que es útil para algo? Entonces ... ¿para qué sirve TRACE y qué lo distingue de DEBUG?