Question

Je suis nouveau chez TraceSource, je suis donc en train d’enquêter sur la façon dont il peut ou ne peut pas être utilisé (essentiellement pour et contre).

Quelque chose que j’aime bien, c’est que je peux obtenir des dumps à partir du framework .NET lui-même. C’est pourquoi j’ai créé une petite application pour le tester et utiliser mon propre source personnalisée (car c’est ce que je pensais. utilisé), comme suit:

class Program
{
    static void Main(string[] args)
    {
        SmtpClient smtp = new SmtpClient();
        var mm = new MailMessage();
        mm.To.Add("me@my-site.com");
        mm.Subject = "Trace Testing";
        smtp.Send(mm);

        var ts = new TraceSource("MyCustomTracer");

        ts.TraceEvent(TraceEventType.Error, 0, "This is an error");
        ts.TraceEvent(TraceEventType.Information, 0, "Just debugging now");
    }
}

J'ai ensuite ajouté des auditeurs dans le App.config comme ceci:

<system.diagnostics>
<trace autoflush="true" />
<sources>
  <source name="MyCustomTracer"
          switchValue="Information, ActivityTracing">
    <listeners>
      <add name="sdt"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData= "traceOutput.log" />
    </listeners>
  </source>
  <source name="System.Net"
          switchValue="Information, ActivityTracing, Critical">
    <listeners>
      <add name="sdt"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData= "traceOutput.log" />
    </listeners>
  </source>
</sources>
</system.diagnostics>

Mais pour une raison quelconque, lorsque j'exécute l'application, les 2 événements enregistrés via MyCustomTracer ne sont pas enregistrés dans le fichier journal, sauf si je commente les éléments SmtpClient (c'est-à-dire que seul mon traceur personnalisé est utilisé). .

Je me serais attendu à ce que plusieurs ressources TraceSources puissent être utilisées de la manière dont j'essaie de les utiliser. Je ne suis tout simplement pas sûr de ce qui ne va pas.

Était-ce utile?

La solution

Trouvé le problème, une erreur complète de Noob, mes deux éléments TraceSource ont un écouteur qui écrit dans le même fichier. Bien que je ne sois pas tout à fait sûr de l’erreur, ce serait une sorte de conflit lors de l’écriture.

Si vous souhaitez avoir plusieurs sources utilisant le même écouteur, vous devez utiliser le <sharedListeners /> comme ceci:

<system.diagnostics>
<trace autoflush="true" />
<sources>
  <source name="MyCustomTracer"
          switchValue="Information, ActivityTracing">
    <listeners>
       <add name="sdt" />
    </listeners>
  </source>
  <source name="System.Net"
          switchValue="Information, ActivityTracing, Critical">
    <listeners>
      <add name="sdt" />
    </listeners>
  </source>
</sources>
<sharedListeners>
    <add name="sdt"
        type="System.Diagnostics.XmlWriterTraceListener"
        initializeData= "traceOutput.log" />
</sharedListeners>
</system.diagnostics>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top