Was ist der Unterschied zwischen Ablaufverfolgung und Protokollierung?

Lesezeit: 4 Minuten

Benutzeravatar von PencilCake
BleistiftKuchen

Was ist aus terminologischer Sicht und im Allgemeinen der Unterschied zwischen a tracing und ein logging ?

Danke!

Benutzeravatar von Stoppan
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/

Benutzeravatar von Boris Pavlović
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


Benutzeravatar von zsery
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.

1449790cookie-checkWas ist der Unterschied zwischen Ablaufverfolgung und Protokollierung?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy