2010-09-29 4 views
5

J'essaie de configurer le suivi .NET. Je suis en mesure d'obtenir le suivi de base à travailler via System.Diagnostics.Trace, mais pour des raisons compliquées, je dois activer le suivi via les objets System.Diagnostics.TraceSource (la nouvelle façon de le faire, depuis .NET 2.0) plutôt que d'utiliser le système .Diagnostics.Trace. J'ai tout essayé mais je ne veux pas travailler avec TraceSource. Je joue le traçage dans un code-behind ASP.NET (aspx.cs).NET traçage ne fonctionne pas avec Diagnostics.TraceSource, uniquement Diagnostics.Trace

Voici quelques URL liées:

http://msdn.microsoft.com/en-us/library/ty48b824.aspx
http://msdn.microsoft.com/en-us/library/64yxa344.aspx
http://msdn.microsoft.com/en-us/library/sk36c28t.aspx
http://blogs.msdn.com/b/bclteam/archive/2005/03/15/396431.aspx
http://msdn.microsoft.com/en-us/library/b0ectfxd%28v=VS.100%29.aspx

Actuellement , basé sur ce qui est dans web.config, il devrait être suivi d'un fichier et de la page, à partir de ce code:

TraceSource ts = new TraceSource("mysource", SourceLevels.All); 
Trace.Write("Trace (old way)"); // this one works 
ts.TraceInformation("Trace (new way)"); // this one doesn't work 
ts.Flush(); 
ts.Close(); 

est ici les sections web.config qui sont pertinentes:

<system.diagnostics> 
     <trace autoflush="false"> 
      <listeners> <!-- these listeners activate the "old way" of tracing. --> 
       <add  name="pagelistener" /> 
       <add  name="filelistener" /> 
      </listeners> 
     </trace> 

     <sources> 
      <source name="mysource" switchName="myswitch"> 
       <listeners> <!-- these listeners activate the "new way" --> 
         <add name="pagelistener" /> 
         <add name="filelistener" /> 
       </listeners> 
      </source> 
     </sources> 


     <sharedListeners> 
      <!-- these are the actual trace listeners --> 
      <add 
        name="filelistener" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="loplog.txt" 
       /> 
      <add 
       name="pagelistener" 
       traceOutputOptions="none" 
       type="System.Web.WebPageTraceListener, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
       /> 
     </sharedListeners> 

     <switches> 
      <!-- the sources above use this verbose switch --> 
      <add name="myswitch" value="Verbose"/> 
     </switches> 

</system.diagnostics> 
<system.codedom> 
     <!-- this compilers section should not be needed because I added 
       #define TRACE to the .aspx.cs file, however I put this in 
       since it's still not working. --> 

     <compilers> 
      <compiler 
          language="c#;cs;csharp" 
          extension=".cs" 
          compilerOptions="/d:TRACE" 
          type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
          warningLevel="1" 
          /> 
     </compilers> 
</system.codedom> 

<system.web> 
     <!-- this trace tag should be redundant because I added trace="true" to the aspx file, 
       but I put it in here anyway because this wasn't working. --> 
     <trace writeToDiagnosticsTrace="true" enabled="true" pageOutput="true" requestLimit="50" localOnly="true"/> 

Répondre

5

changement switchName="mySwitch"-switchValue="Verbose". Cela affiche alors TOUTES les traces via la source de données. Vous pouvez changer le switchLevel pour augmenter/réduire la verbosité du tracé. Dans votre exemple vous avez tracé un message d'information, il y a, verbeux, des informations, des avertissements, des erreurs, des critiques. Réglez le commutateur à l'avertissement et vous n'obtiendrez aucun message verbeux ou d'information.

+0

J'ai le même problème en ce moment. Cela ne semblait pas avoir d'effet pour moi. – Josh

Questions connexes