2017-07-06 3 views
0

J'essaie de définir le suivi dans mon serveur WCF en production, donc il enregistre uniquement les "problèmes". Pas d'information. J'ai regardé les documents Microsoft, here, mais cela ne fonctionne pas pour moi.Comment régler le suivi WCF sur long seulement Avertissements, Erros et Fatals?

Il est paramètres recommandés pour le déploiement ou Débogage

Je l'ai essayé, et ressemble à cela fonctionne. Je reçois tous les messages enregistrés (je pense).

Il y a aussi paramètres recommandés pour un environnement de production, ici:

<configuration> 
<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" 
      switchValue="Warning" 
      propagateActivity="true" > 
     <listeners> 
     <add name="xml"/> 
     </listeners> 
    </source> 
    <source name="myUserTraceSource" 
      switchValue="Warning, ActivityTracing"> 
     <listeners> 
     <add name="xml"/> 
     </listeners> 
    </source> 
    </sources> 
    <sharedListeners> 
    <add name="xml" 
     type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="C:\logs\Traces.svclog" /> 
    </sharedListeners> 
</system.diagnostics> 

<system.serviceModel> 
    <diagnostics wmiProviderEnabled="true"> 
    </diagnostics> 
</system.serviceModel> 
</configuration> 

Je collé à mon fichier de configuration et .. il y a une faute de frappe, je pense. Ils ont écrit:

switchValue="Warning" (avec le journal ne se crée pas)

Alors je l'ai changé: switchValue="Warning, ActivityTracing" Maintenant, je reçois le journal, mais .. j'obtenir les mêmes résultats que le Version de débogage. Pourquoi?

Je tentais:

1)

<diagnostics> 
    <messageLogging 
     logEntireMessage="false" 
     logMalformedMessages="false" 
     logMessagesAtServiceLevel="false" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="5" /> 
</diagnostics> 

2)

<sources> 
    <source name="System.ServiceModel" 
      switchValue="Off, ActivityTracing" 
      propagateActivity="true" > 
     <listeners> 
     <add name="xml"/> 
     </listeners> 
    </source> 
    <source name="myUserTraceSource" 
      switchValue="Off, ActivityTracing"> 
     <listeners> 
     <add name="xml"/> 
     </listeners> 
    </source> 
    </sources> 
    </sources> 

3)

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" 
      switchValue="Off, ActivityTracing" 
      propagateActivity="true" > 
     <listeners> 
     <add name="TraceLog"/> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.MessageLogging" 
      switchValue="Off, ActivityTracing" 
      propagateActivity="true"> 
     <listeners> 
     <add name="xml"/> 
     </listeners> 
    </source>  
    <source name="myUserTraceSource" 
      switchValue="Off, ActivityTracing"> 
     <listeners> 
     <add name="TraceLog"/> 
     </listeners> 
    </source> 
    </sources> 
    <sharedListeners> 
    <add name="TraceLog" 
      type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="C:\logs\Traces.svclog" /> 
    </sharedListeners> 
    </system.diagnostics> 

n'a pas fonctionné: //

Répondre

1

Le suivi WCF est construit au-dessus de System.Diagnostics et chaque assembly WCF émet des messages de trace différents. System.ServiceModel est la source de trace WCF la plus courante et émet des traces pour la plupart des activités WCF. Le niveau d'information émis est contrôlé via l'attribut switchValue dans les fichiers de configuration.

Vous voyez également les messages de trace de démarrage/d'arrêt/de transfert car le niveau de trace ActivityTracing est ajouté à la valeur switchValue. Si vous laissez seulement Avertissement cela devrait fonctionner correctement.

Parfois, le fichier svclog généré peut sembler vide lorsque l'hôte du service est en cours d'exécution (par exemple s'il est hébergé sous IISExpress). Arrêtez le site et vous verrez les messages générés uniquement pour les avertissements & ci-dessus.

Par exemple, la configuration de diagnostic ci-dessous capturé seulement le ArgumentNullException

<system.diagnostics> 
    <sources> 
     <source propagateActivity="false" name="System.ServiceModel" 
     switchValue="Warning"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelTraceListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="traces.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     name="ServiceModelTraceListener" traceOutputOptions="None"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    </system.diagnostics> 

enter image description here

Configuring Tracing doc de MS répertorie les différents niveaux de trace qui peuvent être utilisés avec des sources de traces.