In Log4J, Slf4J e un paio di altri framework di registrazione in Java, hai due livelli di "sviluppo" per la registrazione:
- DEBUG
- TRACCIARE
Capisco cosa fa DEBUG, perché la spiegazione è chiara:
Il livello DEBUG designa eventi informativi dettagliati che sono più utili per il debug di un'applicazione.
Ma il livello TRACE non è molto specifico sul suo caso d'uso:
Il livello TRACE indica eventi informativi più dettagliati rispetto al 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 . Cercare su Google la differenza tra TRACE e DEBUG sembra solo restituire "usa DEBUG, oh, e c'è anche TRACE". Non sono riuscito a trovare un caso d'uso specifico per il livello TRACE. La migliore che ho trovato è stata questa vecchia pagina wiki che ha discusso 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 con domande:
- Quali sono alcuni esempi di informazioni che dovrebbero essere registrate con TRACE e non con DEBUG?
- Quale problema specifico posso risolvere registrando tali informazioni?
- In quegli esempi, quali sono le proprietà delle informazioni registrate che discriminano chiaramente tra la registrazione a livello di TRACE piuttosto che a livello di DEBUG?
- Perché tali informazioni devono passare attraverso l'infrastruttura di registro?
- Quali sono i vantaggi della persistenza di tali informazioni nelle riviste dei registri piuttosto che del solo utilizzo
System.out.println
? - Perché è meglio usare il registro per questo piuttosto che un debugger?
- Quali sono i vantaggi della persistenza di tali informazioni nelle riviste dei registri piuttosto che del solo utilizzo
- Quale sarebbe un esempio canonico di registrazione a livello di TRACE?
- Quali sono i vantaggi specifici ottenuti registrando a livello di TRACE anziché DEBUG nell'esempio?
- Perché questi guadagni sono importanti?
- Al contrario: quali problemi ho evitato registrandolo su TRACE anziché su DEBUG?
- In quale altro modo potrei risolvere questi problemi? Perché la registrazione a livello di TRACE è migliore di quelle di altre soluzioni?
- L'istruzione di registro a livello di TRACE deve essere lasciata nel codice di produzione? Perché?
Ma dato che è presente nella maggior parte dei principali framework, immagino che sia utile per qualcosa? Quindi ... a cosa serve TRACE e cosa lo distingue da DEBUG?