En Log4J, Slf4J y un par de marcos de registro en Java, tiene dos niveles de "desarrollador" para el registro:
- DEPURAR
- RASTRO
Entiendo lo que hace DEBUG, porque la explicación es clara:
El nivel DEBUG designa eventos informativos específicos 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 finos que el DEPURACIÓN
(Fuente: the 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 syslog . Buscar en Google la diferencia entre TRACE y DEBUG solo parece devolver "use DEBUG, oh, y también hay TRACE". 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, levanta muchas banderas y preguntas en mi cabeza. Si un desarrollador joven me pidiera agregar TRACE a mi arquitectura, lo bombardearía con preguntas:
- ¿Cuáles son algunos ejemplos de información que deberían registrarse con TRACE y no con DEBUG?
- ¿Qué problema específico resuelvo registrando esa información?
- En esos ejemplos, ¿cuáles son las propiedades de la información registrada que discriminan claramente 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 mantener esa información en un diario de registros en lugar de solo usarla
System.out.println
? - ¿Por qué es mejor usar log para esto en lugar de un depurador?
- ¿Cuáles son los beneficios de mantener esa información en un diario de registros en lugar de solo usarla
- ¿Cuál sería un ejemplo canónico de inicio de sesión en el nivel TRACE?
- ¿Cuáles son las ganancias específicas 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 forma podría resolver esos problemas? ¿Por qué es mejor iniciar sesión en el nivel TRACE que esas otras soluciones?
- ¿Debería dejarse la declaración de registro de nivel TRACE en el código de producción? ¿Por qué?
Pero dado que está presente en la mayoría de los marcos principales, ¿supongo que es útil para algo? Entonces ... ¿para qué sirve TRACE y qué lo distingue de DEBUG?