2010-06-11 10 views
2

Lorsque vous utilisez System.Diagnostics TraceSource pour l'enregistrement/le traçage, est-il une différence entre l'utilisation et TraceSource.TraceTransfer TraceSource.TraceEvent (TraceEventType.Transfer, ...?TraceSource.TraceTransfer vs TraceSource.TraceEvent (TraceEventType.Transfer

dans notre environnement, nous allons développer un certain nombre de services qui communiquent via WCF. nous évaluons aussi ce que la plate-forme que nous devrions utiliser pour l'enregistrement/traçage. nous penchons vers l'utilisation System.Diagnostics, au moins en partie à cause de la capacité pour établir une corrélation entre les journaux entre les services utilisant le CorrelationManager, ActivityID, TraceTransfer etc.

Je peux voir dans la documentation TraceSource qu'il a un Tra Méthode ceTransfer ainsi qu'un TraceEvent pouvant prendre TraceEventType.Transfer comme type d'événement. Quand utiliseriez-vous l'un par rapport à l'autre? Je l'ai vu des exemples comme here qui montrent comment utiliser Start/Stop et comment gérer les ActivityID et CorrelationManager, mais je l'ai rarement vu quelqu'un utiliser TraceSource.TraceEvent (TraceEventType.Transfer, ...). Il y a un exemple here qui montre en utilisant TraceEventType.Transfer (ainsi qu'appeler explicitement TraceTransfer).

En ce moment, peut-être je commence en fait de répondre à ma propre question ...

Il semble que TraceSource.TraceTransfer est fait explicitement quelque chose avec le ActivityID qui est passé comme paramètre alors appeler TraceSource.TraceEvent (TraceEventType.Transfer, ...) ne fait explicitement rien avec l'ActivityID (puisqu'il n'est pas passé en paramètre). Il semble que ce soit juste en train de consigner un autre événement, qui se trouve être un événement de transfert, mais ne fait rien d'autre avec le CorrelationManager ou quoi que ce soit d'autre.

Merci pour toute aide.

Répondre

2

Selon le MSDN documentation for TraceSource.TraceTransfer, appelle TraceSource.TraceTransfer TraceListener.TraceTransfer. La mise en œuvre de base de TraceListener.TraceTransfer appelle simplement TraceListener.TraceEvent (TraceEventType.Transer, ...), en passant une représentation de chaîne de la guid passé à TraceSource.TraceTransfer.

Ainsi, il me semble que TraceSource.TraceTransfer fournit la manière d'indiquer explicitement que le transfert d'activité se passe. Sur le site d'appel, il est plus évident et plus sûr d'utiliser TraceSource.TraceTransfer. Si vous implémentez un TraceListener, vous pouvez tirer parti de l'appel TraceTransfer explicite et du fait que l'ID d'activité est passé en tant que Guid pour effectuer tout travail spécial que vous souhaitez effectuer lorsqu'un identifiant d'activité est transféré.