Come aggiungere la traccia (semplice) in C #? [chiuso]


122

Voglio introdurre alcune tracce in un'applicazione C # che sto scrivendo. Purtroppo, non riesco mai a ricordare veramente come funziona e vorrei un tutorial con qualità di riferimento da controllare ogni tanto. Dovrebbe includere:

  • Elementi App.config / Web.config da aggiungere per la registrazione di TraceListeners
  • come configurarlo nell'applicazione chiamante

Conosci il tutorial di uber a cui dovremmo collegarci?

EDIT: Glenn Slaven mi ha indicato nella giusta direzione. Aggiungi questo al tuo App.config / Web.config all'interno <configuration/>:

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

Questo aggiungerà un TextWriterTraceListenerche catturerà tutto ciò che invii con Trace.WriteLineecc.

EDIT: @DanEsparza ha sottolineato che dovresti usare Trace.TraceInformation, Trace.TraceWarninge Trace.TraceErrorinvece di Trace.WriteLine, poiché ti consentono di formattare i messaggi allo stesso modo di string.Format.

Suggerimento: se non aggiungi alcun listener, puoi comunque vedere l'output della traccia con il programma SysInternals DebugView ( Dbgview.exe): http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx


4
Consiglio vivamente di usare Trace.TraceInformatione simili invece di WriteLine. Quei membri ti permettono di formattare i tuoi messaggi come string.Format.
Dan Esparza

Risposte:



5

Ho seguito circa 5 diverse risposte e tutti i post del blog sopra e ho ancora avuto problemi. Stavo cercando di aggiungere un ascoltatore a un codice esistente che stava tracciando utilizzando il TraceSource.TraceEvent(TraceEventType, Int32, String)metodo in cui l' TraceSourceoggetto è stato inizializzato con una stringa rendendolo una "sorgente denominata". Per me il problema non era la creazione di una combinazione valida di elementi sorgente e switch per targetizzare questa sorgente. Ecco un esempio che accederà a un file chiamato tracelog.txt. Per il seguente codice:

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

Sono riuscito ad accedere con la seguente configurazione diagnostica:

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

Lo snippet di codice non funziona.
Bee

Mi scuso @usefulBee, non doveva essere uno snippet di codice, è stato automaticamente contrassegnato come codice. Questo è il codice di configurazione che farebbe parte del tuo App.config o Web.config, spero che aiuti.
Shaun

3

DotNetCoders ha un articolo iniziale: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50 , parlano di come impostare gli interruttori nel file di configurazione e di come scrivere il codice, ma è piuttosto vecchio (2002). C'è un altro articolo su CodeProject: http://www.codeproject.com/KB/trace/debugtreatise.aspx ma ha la stessa età. CodeGuru ha un altro articolo sui TraceListeners personalizzati: http://www.codeguru.com/columns/vb/article.php/c5611

Non riesco a pensare ad articoli più recenti, spero che qualcun altro qui abbia qualcosa


Il primo collegamento andrà a un 404.
Kcoder
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.