2008-08-26 4 views
120

Ich möchte eine Ablaufverfolgung zu einer C# -Anwendung, die ich schreibe, einführen. Leider kann ich mich nie wirklich daran erinnern, wie es funktioniert und möchte ein Tutorial mit Referenzqualitäten ab und an mal ausprobieren. Es sollte folgendes beinhalten:Wie (einfache) Ablaufverfolgung in C# hinzufügen?

  • App.config/Web.config Material für die Registrierung Tracelisteners
  • hinzuzufügen, wie es in der rufenden Anwendung einzurichten

Sie das Tutorial uber Sie wissen, dass wir Link zu?

EDIT: Glenn Slaven wies mich in die richtige Richtung. Fügen Sie diese auf Ihre App.config/Web.config innen <configuration/>:

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

Dies wird eine TextWriterTraceListener hinzufügen, dass alles, was Sie senden fangen mit Trace.WriteLine usw.

EDIT: @DanEsparza wies darauf hin, dass Sie sollten Trace.TraceInformation, Trace.TraceWarning und Trace.TraceError anstelle von Trace.WriteLine verwenden, da Sie Nachrichten auf die gleiche Weise wie string.Format formatieren können.

Tipp: Wenn Sie Hörer nicht stimmen, dann können Sie immer noch die Trace-Ausgabe mit dem Sysinternals-Programm Debugview sehen (Dbgview.exe): http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

+4

ich statt Console.WriteLine mit 'Trace.TraceInformation' und dergleichen sehr empfehlen.Mit diesen Mitgliedern können Sie Ihre Nachrichten wie 'string.Format' formatieren. –

Antwort

3

DotNetCoders hat einen Starter Artikel darauf: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50, sie sprechen darüber, wie die Schalter in der Konfigurationsdatei einzurichten & wie Sie den Code zu schreiben, aber es ist ziemlich alt (2002). Es gibt einen anderen Artikel über CodeProject: http://www.codeproject.com/KB/trace/debugtreatise.aspx, aber es ist das gleiche Alter. MS-Office hat einen anderen Artikel auf benutzerdefinierten Tracelisteners: http://www.codeguru.com/columns/vb/article.php/c5611

Ich kann nicht von irgendwelchen neueren Artikel denken, hoffentlich jemand anderes hier wird etwas

5

Ich folgte etwa 5 verschiedenen Antworten sowie alle Blog-Beiträge und hatte immer noch Probleme. Ich habe versucht, einen Listener zu einem vorhandenen Code hinzuzufügen, der die Methode TraceSource.TraceEvent(TraceEventType, Int32, String) verfolgte, wobei das TraceSource-Objekt mit einer Zeichenfolge initialisiert wurde, die es zu einer "benannten Quelle" machte. Für mich bestand das Problem nicht darin, eine gültige Kombination aus Quell- und Switch-Elementen zu erstellen, um diese Quelle zu erreichen. Hier ist ein Beispiel, das in einer Datei namens tracelog.txt protokolliert wird. Für den folgenden Code:

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

ich es geschafft, erfolgreich mit der folgenden Diagnose Config zu protokollieren:

<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> 
+0

Code-Snippet funktioniert nicht. – usefulBee

+0

Entschuldigung @usefulBee, es sollte kein Code-Snippet sein, es wurde automatisch als Code markiert. Dies ist Konfigurationscode, der Teil Ihrer App.config oder Web.config wäre, ich hoffe, dass das hilft. – Shaun