Comment ajouter un traçage (simple) en C #? [fermé]


122

Je souhaite présenter un traçage à une application C # que j'écris. Malheureusement, je ne me souviens jamais vraiment comment cela fonctionne et je voudrais un tutoriel avec des qualités de référence à vérifier de temps en temps. Il devrait inclure:

  • App.config / Web.config éléments à ajouter pour l'enregistrement de TraceListeners
  • comment le configurer dans l'application appelante

Connaissez-vous le tutoriel uber auquel nous devrions créer un lien?

EDIT: Glenn Slaven m'a orienté dans la bonne direction. Ajoutez ceci à votre App.config / Web.config à l'intérieur <configuration/>:

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

Cela ajoutera un TextWriterTraceListenerqui capturera tout ce que vous envoyez avec, Trace.WriteLineetc.

EDIT: @DanEsparza a souligné que vous devriez utiliser Trace.TraceInformation, Trace.TraceWarninget à la Trace.TraceErrorplace de Trace.WriteLine, car ils vous permettent de formater les messages de la même manière que string.Format.

Conseil: Si vous n'ajoutez aucun écouteur, vous pouvez toujours voir la sortie de trace avec le programme SysInternals DebugView ( Dbgview.exe): http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx


4
Je recommande fortement d'utiliser Trace.TraceInformationet autres au lieu de WriteLine. Ces membres vous permettent de formater vos messages comme string.Format.
Dan Esparza

Réponses:



5

J'ai suivi environ 5 réponses différentes ainsi que tous les articles de blog ci-dessus et j'ai toujours eu des problèmes. J'essayais d'ajouter un écouteur à un code existant qui traçait en utilisant la TraceSource.TraceEvent(TraceEventType, Int32, String)méthode où l' TraceSourceobjet a été initialisé avec une chaîne, ce qui en fait une «source nommée». Pour moi, le problème n'était pas de créer une combinaison valide d'éléments source et de commutateur pour cibler cette source. Voici un exemple qui se connectera à un fichier appelé tracelog.txt. Pour le code suivant:

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

J'ai réussi à me connecter avec la configuration de diagnostic suivante:

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

L'extrait de code ne fonctionne pas.
utileBee

Désolé @usefulBee, ce n'était pas censé être un extrait de code, il était automatiquement marqué comme code. C'est un code de configuration qui ferait partie de votre App.config ou Web.config, j'espère que cela vous aidera.
Shaun

3

DotNetCoders a un article de démarrage à ce sujet: http://www.dotnetcoders.com/web/Articles/ShowArticle.aspx?article=50 , ils expliquent comment configurer les commutateurs dans le fichier de configuration et comment écrire le code, mais c'est assez vieux (2002). Il y a un autre article sur CodeProject: http://www.codeproject.com/KB/trace/debugtreatise.aspx mais c'est le même âge. CodeGuru a un autre article sur les TraceListeners personnalisés: http://www.codeguru.com/columns/vb/article.php/c5611

Je ne peux penser à aucun article plus récent, j'espère que quelqu'un d'autre aura quelque chose ici


Le premier lien va vers un 404.
Kcoder
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.