Question

J'utilise la méthode suivante pour ajouter un enregistrement de trace:

TraceSource.TraceEvent(TraceEventType, Int32, String)

où Int32 représente id événement.

Alors, comment filtre TraceSwitch pour écouter seulement par ID d'événement spécifié? Ir cela est impossible?

<system.diagnostics>
    <sources>
        <source name="MyTraceSource" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch>"
            <listeners>
                <add name="console" type="System.Diagnostics.ConsoleTraceListener" />
            </listeners>
        </source>
    </sources>
    <switches>
        <add name="sourceSwitch" value="?" />
    </switches>
</system.diagnostics>
Était-ce utile?

La solution

Il est possible, mais vous devez écrire une coutume TraceFilter et remplacer la méthode ShouldTrace . L'identifiant est transmis à, mais pas hors de sa boîte de filtrage prend en charge.

Ensuite, vous pouvez le déclarer comme celui-ci dans un fichier .config:

<source name="MyTraceSource" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch">
  <listeners>
    <add name="console" type="System.Diagnostics.ConsoleTraceListener">
      <filter type="YourNamespace.YourFilter, YourAssembly, ..." />
    </add>
  </listeners>
</source>

Autres conseils

Vous pouvez essayer Ukadc.Diagnostics de CodePlex . Ce projet fournit quelques extensions utiles pour System.Diagnostics. La chose la plus cool, à mon avis, qu'ils fournissent est un système symbolique qui peut être utilisé pour définir le format de sortie log / trace semblable à ce que vous pouvez réaliser avec log4net et NLog. Il est une dépendance de configuration uniquement. Autrement dit, si votre code est déjà utilisé TraceSources, il suffit de mettre Ukadc.Diagnostics sur votre machine et votre point de app.config à leurs TraceListeners, PropertyTokens, etc.

Vous toujours instrument de votre code en utilisant des objets System.Diagnostics.TraceSource.

Pour votre point, à l'aide Ukadc.Diagnostics vous pouvez filtrer à partir de la plupart des jetons de propriété (y compris EventId).

Notez que le système de jetons ne peut être utilisé (pour autant que je sache) avec les TraceListeners correspondants prévus dans Ukadc.Diagnostics (ou tout TraceListener que vous écrivez en fonction de leur classe de base TraceListener).

Je n'ai pas utilisé ce projet dans la production, mais je l'ai dupé avec elle un peu et ont été très impressionné. Il fonctionne bien et est facile à étendre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top