9
votes

Problème avec system.diagnosis.textwriterTraCelistener ne pas écrire un journal au système de fichiers

Pour résoudre un problème avec l'envoi d'e-mail via un serveur SMTP où les courriers électroniques ne sont pas envoyés, j'ai été informé d'activer la journalisation à l'aide de System.Diagnosis.textwriterTracelistener pour tracer la communication avec le serveur SMTP pour suivre n'importe quel les erreurs. J'ai ajouté ce qui suit à mon web.config sous le nœud:

<system.diagnostics>
      <trace autoflush="true" />
      <sources>
        <source name="System.Net" >
          <listeners>
            <add name="MyTraceFile"/>
          </listeners>
        </source>

        <source name="System.Net.Sockets">
          <listeners>
            <add name="MyTraceFile"/>
          </listeners>
        </source>
      </sources>

      <sharedListeners>
        <add
          name="MyTraceFile"
          type="System.Diagnostics.TextWriterTraceListener"
          initializeData="System.Net.trace.log"                />
      </sharedListeners>

      <switches>
        <add name="System.Net" value="Verbose" />
        <add name="System.Net.Sockets" value="Verbose" />
      </switches>
    </system.diagnostics>


0 commentaires

5 Réponses :


2
votes

Est-ce la même construction de développement et de production? Fréquemment, la constante de compilation conditionnelle de la trace n'est pas définie en mode de libération. Ensuite, aucun traçage ne se présentera.


1 commentaires

Oui, c'est la même chose dans le développement et la production. J'ai également vérifié en activant la traçabilité sur la même version, mais dans un environnement de production différent, et il a bien fonctionné. Merci pour la pointe Tho!



1
votes

Avez-vous essayé d'utiliser moniteur de processus pour voir si le système .Net.trace.log Fichier est en cours d'écriture ou s'il y a une erreur la créant? Est-il possible qu'il soit juste d'être écrit à un endroit étrange que vous ne cherchez pas (je pense que la valeur par défaut doit être le répertoire de travail actuel du processus de travailleur ASP.NET).


0 commentaires



1
votes

Mon problème était que la constante de trace n'était pas définie dans un projet dépendant, alors même s'il était fixé dans le projet principal, il ne se connaîtrait toujours pas. Une fois que j'ai ajouté la trace constante au projet dépendant, cela a fonctionné comme prévu.


0 commentaires