In Log4J, Slf4J und einigen anderen Protokollierungsframeworks in Java gibt es zwei Entwicklungsstufen für die Protokollierung:
- DEBUGGEN
- SPUR
Ich verstehe, was DEBUG macht, weil die Erklärung klar ist:
Die DEBUG-Ebene kennzeichnet fein abgestimmte Informationsereignisse, die zum Debuggen einer Anwendung am nützlichsten sind.
Die TRACE-Ebene ist jedoch in Bezug auf den Anwendungsfall nicht sehr spezifisch:
Die TRACE-Ebene kennzeichnet detailliertere Informationsereignisse als die DEBUG-Ebene
(Quelle: das log4J JavaDoc )
Dies sagt mir nicht, wie oder wann ich TRACE verwenden soll. Interessanterweise ist dies kein im Syslog-Standard definierter Schweregrad . Das Googeln nach dem Unterschied zwischen TRACE und DEBUG scheint nur "use DEBUG, oh, und es gibt auch TRACE" zurückzugeben. Ich konnte keinen bestimmten Anwendungsfall für die TRACE-Ebene finden. Das Beste, was ich finden konnte, war diese alte Wiki-Seite , auf der über die Existenz des Levels diskutiert wurde.
Dies wirft als Architekt viele Fahnen und Fragen in meinem Kopf auf. Wenn ein junger Entwickler mich bat, TRACE zu meiner Architektur hinzuzufügen, würde ich ihn mit Fragen bombardieren:
- Welche Beispiele für Informationen sollten mit TRACE und nicht mit DEBUG protokolliert werden?
- Welches spezifische Problem löse ich, indem ich diese Informationen aufzeichne?
- Welche Eigenschaften der protokollierten Informationen unterscheiden in diesen Beispielen eindeutig zwischen der Protokollierung auf TRACE-Ebene und der DEBUG-Ebene?
- Warum müssen diese Informationen die Protokollinfrastruktur durchlaufen?
- Welche Vorteile bietet es, diese Informationen in einem Protokoll zu speichern, anstatt sie nur zu verwenden
System.out.println
? - Warum ist es besser, dafür ein Protokoll zu verwenden, als einen Debugger?
- Welche Vorteile bietet es, diese Informationen in einem Protokoll zu speichern, anstatt sie nur zu verwenden
- Was wäre ein kanonisches Beispiel für die Protokollierung auf TRACE-Ebene?
- Was sind die spezifischen Vorteile, die durch die Protokollierung auf TRACE-Ebene anstelle von DEBUG im Beispiel erzielt wurden?
- Warum sind diese Gewinne wichtig?
- Umgekehrt: Welche Probleme habe ich vermieden, indem ich es bei TRACE anstelle von DEBUG protokolliert habe?
- Wie könnte ich diese Probleme sonst lösen? Warum ist die Protokollierung auf TRACE-Ebene besser als bei diesen anderen Lösungen?
- Soll die Protokollanweisung auf TRACE-Ebene im Produktionscode belassen werden? Warum?
Aber da es in den meisten wichtigen Rahmenbedingungen vorhanden ist, schätze ich, dass es für etwas nützlich ist? Also ... wofür ist TRACE und was unterscheidet es von DEBUG?