web-dev-qa-db-fra.com

Emplacement des journaux de suivi, où les consulter

Où voyez-vous les journaux de Trace.Write(""); lors du développement d'une application MVC ou WCF? Quel est le bon endroit à regarder?

18
DarthVader

Lorsque vous utilisez la classe System.Diagnostics.Trace, la méthode Write écrit sa sortie de trace " dans les écouteurs de trace de la collection Listeners. " La propriété Trace.Listeners par défaut contient uniquement une instance de - DefaultTraceListener , qui génère des messages dans la fenêtre de sortie du débogueur. Pour afficher ces messages de trace, vous devez bien sûr activer le débogage.

Donc, si vous déboguez votre service WCF ou votre application ASP.NET dans Visual Studio, vous verrez la sortie de trace dans le volet VS Output. Par exemple, ce code:

System.Diagnostics.Trace.WriteLine("GetData method was called.");

... fait apparaître cette sortie:

debug output

Si vous ne souhaitez pas exécuter un débogueur pour voir la sortie de trace, vous pouvez supprimer le DefaultTraceListener et le remplacer par un autre, par exemple, un TextWriterTraceListener qui générera votre trace dans un fichier. Cela peut être fait en créant un fichier web.config avec le contenu suivant (ou ajoutez simplement la section system.diagnostics à votre web.config préexistant):

<configuration>
    <system.diagnostics>
      <trace autoflush="true" indentsize="4">
        <listeners>
          <remove name="Default" />
          <add name="myListener" type="System.Diagnostics.TextWriterTraceListener"
               initializeData="c:\myListener.log" />
        </listeners>
      </trace>
    </system.diagnostics>
</configuration>

Après cela (en supposant que vous exécutez dans un mode qui a accès pour écrire à l'emplacement de sortie), vos traces seront sorties dans le fichier spécifié.

Si vous souhaitez écrire vos traces dans le journal des événements plutôt que dans un fichier, vous pouvez le faire aussi avec un EventLogTraceListener :

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="TraceListenerLog" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Veillez simplement à ce que votre application s'exécute dans un contexte de compte avec un accès pour écrire dans le journal des événements.

Il y a beaucoup plus que vous pouvez faire avec le traçage (comme le faire sortir sur la page ASP.NET elle-même. Vous trouverez une procédure pas à pas avec plus d'exemples ici .

23
schellack