Was ist aus terminologischer Sicht und im Allgemeinen der Unterschied zwischen a tracing
und ein logging
?
Danke!
BleistiftKuchen
Was ist aus terminologischer Sicht und im Allgemeinen der Unterschied zwischen a tracing
und ein logging
?
Danke!
Stopfan
Logging
ist nicht Tracing
!
Logging
Wenn Sie eine große Anwendung entwerfen, benötigen Sie eine gute und flexible Fehlerberichterstattung – möglicherweise über mehrere Computer hinweg –, um Protokolldaten zentral zu erfassen. Das ist ein perfekter Anwendungsfall für die Logging Application Block
wo Sie einen Remote-Trace-Listener konfigurieren und die Protokolldaten an einen zentralen Protokollserver senden, der seine Protokollnachrichten in einer Datenbank, einer Protokolldatei oder was auch immer speichert. Wenn Sie die Out-of-Process-Kommunikation nutzen, sind Sie bereits durch die Netzwerkleistung begrenzt, die im besten Fall mehrere tausend Logs/s beträgt.
Tracing
Neben der Fehlerberichterstattung müssen Sie auch Ihren Programmablauf verfolgen, um herauszufinden, wo die Leistungsengpässe liegen. Noch wichtiger ist, dass Sie bei Auftreten eines Fehlers die Möglichkeit haben, herauszufinden, wie Sie dorthin gekommen sind. In einer idealen Welt wäre für jede Funktion eine Ablaufverfolgung aktiviert, die die Funktionsdauer, die übergebenen Parameter und den Fortschritt Ihrer Funktion anzeigt.
Wenn der Kontext eine Beobachtbarkeitsfähigkeit über a entwickelt verteilte Architektur, ist es üblich, über Metriken, Protokolle und Ablaufverfolgung zu sprechen. In diesem Zusammenhang bezieht sich Tracing auf verteilte Ablaufverfolgung.
Die verteilte Ablaufverfolgung ist eine spezialisierte Art der Telemetrie (ähnlich wie die Protokollierung, aber anders) und wird normalerweise hochautomatisiert durch Instrumentierungs-Frameworks erstellt. Die Telemetriedaten werden von den einzelnen Diensten im System gesendet und von einem zentralen Dienst (einem verteilten Tracer) aggregiert, der in der Lage ist, die Telemetriedaten von vielen einzelnen Diensten für jede im System eingegangene Anforderung zu einem einzigen Trace zusammenzufügen. Es kann dann eine Zeitleiste und ein Diagramm darüber bereitstellen, wie eine Anfrage durch die Dienste im System gegangen ist. Der Hauptzweck verteilter Ablaufverfolgungen besteht darin, Leistungseinbußen, Fehlerausbreitung und Abhängigkeitsinteraktionen in verteilten Systemen zu untersuchen.
Während die Ablaufverfolgung in einem traditionelleren monolithischen Kontext typischerweise auf die Ablaufverfolgung einzelner Funktionsaufrufe innerhalb einer Anwendung abzielt, befasst sich die verteilte Ablaufverfolgung typischerweise nur mit den Interaktionen zwischen Dienstleistungen. Telemetrie von Details auf Funktionsaufrufebene ist möglich, aber selten implementiert.
Weitere Informationen zur verteilten Ablaufverfolgung finden Sie unter: https://opentelemetry.lightstep.com/tracing/
Boris Pavlović
Trace
ist die am wenigsten gefilterte Protokollierungsstufe. Jede Protokollanweisung hat eine Filterebene:
trace
debug
warning
error
severe
Zum Beispiel. wenn die Protokollierungsbibliothek für die Protokollierung mit Ebene konfiguriert ist warning
dann alle warning
, error
Und severe
Logging-Anweisungen geben Meldungen an die Logging-Ausgabe aus.
Ich glaube, dass diese Begriffe nicht ganz Standard sind, da viele Softwareanbieter und/oder Entwickler diese Begriffe auf völlig unterschiedliche Weise (und in unterschiedlichen Kontexten) verwenden. Ihre Beschreibung passt genau gut zu Bibliotheken wie log4net
, aber das gilt nicht unbedingt für alles. Was meiner Meinung nach sehr häufig ist, ist, dass die Ablaufverfolgung der Prozess des “Erhaltens/Empfangens” von Daten aus einem Ereignis/einer Operation ist, während die Protokollierung der Prozess der Ausgabe (Senden oder Speichern) dieser Ablaufverfolgung ist
– Löwe
2. Dezember 2014 um 8:42 Uhr
Ja, du hast recht. Ich spreche nicht von Tracing, sondern von Trace-Logging-Level. Ich gehe davon aus, dass es bei der Frage nicht um die Ablaufverfolgung geht, sondern um die Ablaufverfolgungsebene, da sie in denselben Kontext gestellt wird. Ich habe Stoppans Antwort positiv bewertet, damit sie ganz oben stehen könnte. Meine ist nur ein Nachtrag
– Boris Pavlović
2. Dezember 2014 um 15:23 Uhr
Sie sagen also einfach, dass die Ablaufverfolgung eine Teilmenge der Protokollierung ist. Obwohl einer mit einem anderen Paradigma im Sinn. Rechts?
– mfaani
13. Dezember 2018 um 19:58 Uhr
Während dies wahr ist. Es ist auch wichtig, das “Trace-Level-Logging” zu beachten! = “Traces protokollieren”
– Lukas Hammer
9. September 2019 um 16:18 Uhr
Vielen Dank für die Antwort, aber leider ist dies irreführend. Wie andere Kommentare bereits festgestellt haben, erweckt es den Eindruck, dass die Ablaufverfolgung nur eine Teilmenge der Protokollierung oder in gewisser Weise analog ist. Das Wort TRACE bezieht sich auf “STACK TRACE”, wie in: Melden Sie sich so detailliert an, dass Sie mir einen ganzen Stacktrace zeigen.
– Runderwelt
26. Juni 2021 um 20:08 Uhr
zserie
Die Protokollierung dient auch der Leistungsüberwachung. Muss nicht stimmen, dass nur Trace herausfinden kann, wo die Performance-Engpässe liegen. Beide können im verteilten Modus arbeiten.
Ereignisprotokollierung vs. Ablaufverfolgung fasst es schön zusammen.
– Filburt
2. Dezember 2014 um 8:28 Uhr