Comment utiliser TraceSource de toutes les classes de
J'ai été récemment l'étude de la documentation sur TraceSource. Microsift dit que TraceSource est une nouvelle façon et doit être utilisé au lieu de l'ancienne classe de Trace.
//create single TraceSource instance to be used for logging
static TraceSource ts = new TraceSource("TraceTest");
//somewhere in the code
ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found");
Maintenant ma question. Vous avez un grand projet avec plusieurs assemblées, où vous avez beaucoup de classes. Dites que vous voulez trace de bits fonctionnalités qui sont répartis dans les classes. Idée évidente est que vous devez en créer un spécifique TraceSource .
1) À travailler avec les Tracesource j'ai besoin de créer une instance de la première. Qu'est-ce que MME la réflexion sur le partage de cette instance dans diverses classes ou dans les assemblées? Dois-je créer une classe factice avec static singleton propriété? Que faites-vous dans ce cas.
2) Pourquoi ai-je besoin TraceSource exemple? Chaque propery est décrit dans le fichier de configuration. La vieille logique basée sur la Trace de la classe n'a pas besoin certains cas et à condition que la façon de travailler avec des méthodes statiques uniquement.
Vous devez vous connecter pour publier un commentaire.
*1. Il suffit de définir la TraceSource dans chaque catégorie où vous souhaitez l'utiliser. Vous pouvez faire la TraceSource statique de sorte qu'elle partagée entre toutes les instances de la classe que vous le définissez. Pas besoin de partager l'instance entre toutes les catégories (types) qui ont besoin de la "même" TraceSource. Chaque fois que vous decleare une nouvelle TraceSource (TraceSource ts = new TraceSource("abc"); exemple, vous obtenez une nouvelle TraceSource objet, mais elle fait référence à la même config de l'information. Donc, si vous créez un nouveau TraceSource dans chacune des catégories et que vous utilisez le même nom pour chacun d'eux, vous obtiendrez différentes instances de TraceSource, mais ils vont tous être configurés de la même. En bref, il n'est pas nécessaire d'essayer de partager les instances TraceSource parmi les classes. Il ya aussi pas besoin de créer un mannequin dans une classe static singleton. Voir mes exemples ci-dessous. J'ai également inclus plusieurs liens à partir de là, de SORTE que décrire la façon de travailler avec TraceSources.
*2. Un des avantages de l'utilisation de plusieurs TraceSources est que vous avez un contrôle plus précis de votre suivi. Vous pouvez les retrouver via "TraceTest" à un niveau (ou pas du tout) et par l'intermédiaire de "TraceTestTwo" à un autre niveau (ou, encore une fois, pas du tout). Vous pouvez envoyer chaque TraceSource à ses propres TraceListener ou les envoyer tous à la même TraceListener, ou mélanger et assortir. Comparer la capacité d'adapter la configuration des différents TraceSources à la limitation de seulement à l'aide de méthodes statiques de la classe de Trace. Vous pouvez configurer où la "trace" de fournir de l'information (qui TraceListener(s)) ou le niveau de la "trace" de l'information, mais vous ne pouvez pas contrôler le niveau par classe ou par domaine fonctionnel comme vous pouvez lors de l'utilisation de TraceSources. Enfin, un autre avantage à plusieurs TraceSources est "libre" informations de contexte que vous pouvez obtenir dans votre sortie. Par défaut (ou en option, je ne me souviens pas), le TraceListener permettra d'enregistrer le nom de la TraceSource qui a enregistré un message. Ainsi, vous pouvez regarder cette ligne dans votre sortie et vous faire une idée de la classe ou de la fonctionnelle de la zone où il était venu, sans avoir à mettre un journal d'informations contextuelles dans le site d'appel. Dans les exemples de code ci-dessus, la trace de la sortie des classes A et B seront marqués avec "TraceTest" et la sortie de trace de classe B seront marqués avec "TraceTestTwo".
S'il vous plaît pardonnez le lien bombardement ci-dessous, mais j'ai posté pas mal d'informations (si je dis moi-même!) sur TraceSource et du Système.Diagnostics dans le passé.
Si vous allez utiliser TraceSource, pensez à utiliser la bibliothèque mentionné dans ce post pour le formatage de votre sortie comme log4net/NLog:
L' .Net TraceSource/TraceListener cadre ont quelque chose de semblable à log4net de Formateurs?
Voir ma réponse dans ce post pour plus d'informations sur l'utilisation de TraceSource et quelques idées sur comment vous pouvez améliorer votre "TraceSource de l'expérience".
Plus d'infos sur TraceSource: Ajouter Trace méthodes de Système.Diagnostics.TraceListener
Plus d'infos sur TraceSource: Système.Diagnostics.Débogage de l'espace de noms par rapport à d'Autres solutions de connexion (log4net, MS Bibliothèque d'Entreprise, etc.)
Plus d'infos sur TraceSource: Tournant le traçage à l'arrêt via l'app.config