Ich habe viel über Nachverfolgung und Protokollierung gelesen und versucht, eine goldene Regel für Best Practices in dieser Angelegenheit zu finden, aber es gibt keine. Die Leute sagen, dass gute Programmierer gutes Tracing produzieren, aber sagen Sie es so und es muss aus Erfahrung kommen.
Ich habe auch ähnliche Fragen hier und im Internet gelesen und sie sind nicht wirklich dasselbe, was ich stelle, oder ich habe keine befriedigende Antwort, vielleicht weil die Fragen ein paar Details haben.
Leute sagen also, dass die Ablaufverfolgung die Erfahrung des Debuggens der Anwendung in Fällen replizieren sollte, in denen Sie keinen Debugger anhängen können. Es sollte genügend Kontext bieten, damit Sie sehen können, welcher Pfad an jedem Kontrollpunkt in der Anwendung genommen wird.
Im Detail können Sie sogar zwischen Ablaufverfolgung und Ereignisprotokollierung unterscheiden, da "die Ereignisprotokollierung sich von der Ablaufverfolgung dadurch unterscheidet, dass sie die Hauptzustände erfasst und nicht den detaillierten Kontrollfluss".
Angenommen, ich möchte die Ablaufverfolgung und Protokollierung nur mit den Standard-.NET-Klassen durchführen, die sich im System.Diagnostics
Namespace befinden. Ich stellte fest, dass die TraceSource-Klasse für den Job besser ist als die statische Trace-Klasse, da ich zwischen den Trace-Ebenen unterscheiden und die TraceSource-Klasse verwenden möchte, die ich in einem Parameter übergeben kann, der den Ereignistyp informiert, während ich die Trace-Klasse verwende, die ich verwenden muss Trace.WriteLineIf
und dann Dinge wie SourceSwitch.TraceInformation
und überprüfen SourceSwitch.TraceErrors
, und es hat nicht einmal Eigenschaften wie TraceVerbose
oder TraceStart
.
Würden Sie in Anbetracht dessen eine gute Vorgehensweise in Betracht ziehen, um Folgendes zu tun:
- Verfolgen Sie ein "Start" -Ereignis, wenn Sie eine Methode starten, die eine einzelne logische Operation oder eine Pipeline darstellen soll, sowie eine Zeichenfolgendarstellung der an die Methode übergebenen Parameterwerte.
- Verfolgen Sie ein "Information" -Ereignis, wenn Sie ein Element in die Datenbank einfügen.
- Verfolgen Sie ein "Information" -Ereignis, wenn Sie in einer wichtigen if / else-Anweisung den einen oder anderen Pfad verwenden.
- Verfolgen Sie einen "Kritischen" oder "Fehler" in einem Catch-Block, je nachdem, ob es sich um einen behebbaren Fehler handelt.
- Verfolgen Sie ein "Stop" -Ereignis, wenn die Ausführung der Methode abgeschlossen ist.
Außerdem klären Sie bitte, wann Sie die Ereignistypen "Ausführlich" und "Warnung" am besten nachverfolgen können. Wenn Sie Codebeispiele mit netter Ablaufverfolgung / Protokollierung haben und bereit sind, sie weiterzugeben, wäre dies exzellent.
Hinweis: Ich habe hier einige gute Informationen gefunden, aber immer noch nicht das, wonach ich suche: http://msdn.microsoft.com/en-us/magazine/ff714589.aspx