In Log4J, Slf4J e un paio di altri framework di registrazione in Java, hai due livelli di "sviluppo" per la registrazione:
- DEBUG
- TRACE
Capisco cosa fa DEBUG, perché la spiegazione è chiara:
The DEBUG Level designates fine-grained informational events that are most useful to debug an application.
Ma il livello TRACE non è molto specifico sul suo caso d'uso:
The TRACE Level designates finer-grained informational events than the DEBUG
(Fonte: log4J JavaDoc )
Questo non mi dice come o quando usare TRACE. È interessante notare che questo non è un livello di gravità definito nello standard syslog . Googling per la differenza tra TRACE e DEBUG sembra solo tornare "usa DEBUG, oh, e c'è anche TRACE". Non sono riuscito a trovare un caso d'uso specifico per il livello TRACE. La cosa migliore che ho trovato è stata questa vecchia pagina wiki che discute del merito dell'esistenza del livello.
Questo, come architetto, solleva molte bandiere e domande nella mia testa. Se un giovane sviluppatore mi chiedesse di aggiungere TRACE alla mia architettura, lo bombarderei di domande:
- Quali sono alcuni esempi di informazioni che dovrebbero essere registrati con TRACE e non con DEBUG?
- Quale problema specifico risolve registrando tali informazioni?
- In questi esempi, quali sono le proprietà delle informazioni registrate che chiaramente discriminano tra la registrazione a livello TRACE piuttosto che il livello DEBUG?
- Perché queste informazioni devono passare attraverso l'infrastruttura del registro?
- Quali sono i vantaggi di mantenere tali informazioni in un diario di registri anziché utilizzare solo
System.out.println
? - Perché è meglio usare log per questo piuttosto che un debugger?
- Quali sono i vantaggi di mantenere tali informazioni in un diario di registri anziché utilizzare solo
- Quale sarebbe un esempio canonico di registrazione a livello TRACE?
- Quali sono i guadagni specifici che sono stati fatti registrando a livello TRACE invece di DEBUG nell'esempio?
- Perché questi guadagni sono importanti?
- Al contrario: quali problemi ho evitato registrandolo su TRACE invece di DEBUG?
- In quale altro modo potrei risolvere questi problemi? Perché la registrazione a livello TRACE è migliore rispetto a quelle di altre soluzioni?
- L'istruzione del registro di livello TRACE deve essere lasciata nel codice di produzione? Perché?
Ma dato che è presente nella maggior parte delle strutture principali, suppongo che sia utile per qualcosa? Quindi ... a cosa serve TRACE e cosa lo distingue da DEBUG?