Dans Log4J, Slf4J et quelques autres infrastructures de journalisation en Java, vous avez deux niveaux de "développeur" pour la journalisation:
- DÉBOGUER
- TRACE
Je comprends ce que fait DEBUG, car l'explication est claire:
Le niveau DEBUG désigne les événements d’information détaillés qui sont les plus utiles pour déboguer une application.
Mais le niveau TRACE n’est pas très spécifique quant à son cas d’utilisation:
Le niveau TRACE désigne des événements d’information plus détaillés que le DEBUG.
(Source: le JavaDoc log4J )
Cela ne me dit pas comment ni quand utiliser TRACE. Fait intéressant, il ne s’agit pas d’un niveau de gravité défini dans la norme syslog . Googler pour la différence entre TRACE et DEBUG semble seulement revenir "utilisez DEBUG, oh, et il y a TRACE aussi". Je n'ai pas trouvé de cas d'utilisation spécifique pour le niveau TRACE. Le meilleur que j'ai pu trouver était cette ancienne page wiki qui discutait du mérite de l'existence du niveau.
Ceci, en tant qu'architecte, soulève beaucoup de drapeaux et de questions dans ma tête. Si un jeune développeur me demandait d'ajouter TRACE à mon architecture, je le bombarderais de questions:
- Quels sont quelques exemples d’informations à consigner avec TRACE et non avec DEBUG?
- Quel problème spécifique puis-je résoudre en enregistrant ces informations?
- Dans ces exemples, quelles sont les propriétés des informations consignées qui distinguent clairement la journalisation au niveau TRACE plutôt qu'au niveau DEBUG?
- Pourquoi cette information doit-elle passer par l'infrastructure de journalisation?
- Quels sont les avantages de conserver ces informations dans un journal de bord plutôt que de les utiliser
System.out.println
? - Pourquoi est-il préférable d'utiliser le journal pour cela plutôt que le débogueur?
- Quels sont les avantages de conserver ces informations dans un journal de bord plutôt que de les utiliser
- Quel serait un exemple canonique de journalisation au niveau TRACE?
- Quels sont les avantages spécifiques obtenus en enregistrant au niveau de TRACE au lieu de DEBUG dans l'exemple?
- Pourquoi ces gains sont-ils importants?
- Inversement: Quels problèmes ai-je évités en me connectant à TRACE au lieu de DEBUG?
- Comment pourrais-je résoudre ces problèmes? Pourquoi la journalisation au niveau TRACE est-elle meilleure que ces autres solutions?
- Les instructions de journal de niveau TRACE doivent-elles être laissées dans le code de production? Pourquoi?
Mais étant donné qu'il est présent dans la plupart des cadres majeurs, je suppose qu'il est utile pour quelque chose? Alors… à quoi sert TRACE et qu'est-ce qui le distingue de DEBUG?