Wie füge ich (einfache) Ablaufverfolgung in C # hinzu? [geschlossen]


122

Ich möchte eine Ablaufverfolgung für eine C # -Anwendung einführen, die ich schreibe. Leider kann ich mich nie wirklich daran erinnern, wie es funktioniert, und möchte, dass ein Tutorial mit Referenzqualitäten von Zeit zu Zeit überprüft wird. Es sollte enthalten:

  • App.config / Web.config-Inhalte zum Registrieren von TraceListeners
  • wie man es in der aufrufenden Anwendung einrichtet

Kennen Sie das Tutorial, auf das wir verlinken sollten?

EDIT: Glenn Slaven hat mich in die richtige Richtung gelenkt. Fügen Sie dies Ihrer App.config / Web.config hinzu <configuration/>:

<system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter"
             initializeData="trace.log" />
      </listeners>
    </trace>
</system.diagnostics>

Dies fügt ein hinzu TextWriterTraceListener, das alles abfängt, an das Sie senden Trace.WriteLineusw.

EDIT: @DanEsparza wies darauf hin , dass Sie verwenden sollen Trace.TraceInformation, Trace.TraceWarningund Trace.TraceErrorstatt Trace.WriteLine, wie sie , wie Sie auf Format - Nachrichten auf die gleiche Weise ermöglichen string.Format.

Tipp: Wenn Sie keine Listener hinzufügen, können Sie die Trace-Ausgabe mit dem SysInternals-Programm DebugView ( Dbgview.exe) weiterhin sehen: http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx


4
Ich empfehle dringend die Verwendung von Trace.TraceInformationund dergleichen anstelle von WriteLine. Mit diesen Mitgliedern können Sie Ihre Nachrichten wie folgt formatieren string.Format.
Dan Esparza

Antworten:



5

Ich folgte ungefähr 5 verschiedenen Antworten sowie allen obigen Blog-Posts und hatte immer noch Probleme. Ich habe versucht, einen Listener zu einem vorhandenen Code hinzuzufügen, der mithilfe der TraceSource.TraceEvent(TraceEventType, Int32, String)Methode verfolgt wurde, bei der das TraceSourceObjekt mit einer Zeichenfolge initialisiert wurde, die es zu einer "benannten Quelle" macht. Für mich bestand das Problem nicht darin, eine gültige Kombination aus Quell- und Switch-Elementen für diese Quelle zu erstellen. Hier ist ein Beispiel, das sich in einer Datei namens anmeldet tracelog.txt. Für den folgenden Code:

TraceSource source = new TraceSource("sourceName");
source.TraceEvent(TraceEventType.Verbose, 1, "Trace message");

Ich konnte mich erfolgreich mit der folgenden Diagnosekonfiguration anmelden:

  <system.diagnostics>
    <sources>
      <source name="sourceName" switchName="switchName">
        <listeners>
          <add
              name="textWriterTraceListener"
              type="System.Diagnostics.TextWriterTraceListener"
              initializeData="tracelog.txt" />
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="switchName" value="Verbose" />
    </switches>
  </system.diagnostics>

Code-Snippet funktioniert nicht.
nützlichBee

Entschuldigung @usefulBee, es war nicht als Code-Snippet gedacht, es wurde automatisch als Code markiert. Dies ist Konfigurationscode, der Teil Ihrer App.config oder Web.config sein würde. Ich hoffe, das hilft.
Shaun

3

DotNetCoders hat einen Starter-Artikel: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50 , sie sprechen darüber, wie die Schalter in der Konfigurationsdatei eingerichtet werden und wie der Code geschrieben wird. aber es ist ziemlich alt (2002). Es gibt einen weiteren Artikel über CodeProject: http://www.codeproject.com/KB/trace/debugtreatise.aspx, aber es ist gleich alt. CodeGuru hat einen weiteren Artikel über benutzerdefinierte TraceListener: http://www.codeguru.com/columns/vb/article.php/c5611

Ich kann mir keine neueren Artikel vorstellen, hoffentlich hat jemand anderes hier etwas


Der erste Link führt zu einem 404.
Kcoder
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.