سؤال

لذلك ربما أفتقد ما هو واضح هنا ، ولكن ما هو في الواقع الفرق بين وظيفة TraceSwitch و SourceSwitch الطبقات؟

كلاهما يعطي أوصاف ملخص متطابقة:

يوفر مفتاح متعدد المستويات للتحكم في تتبع وإخراج تصحيح دون إعادة تجميع الكود الخاص بك.

هل تتشابه أقسام الملاحظات بشكل غريب مع عيني. هل يمكن لشخص ما توضيح الفرق في وظائفه ومسائل الاستخدام؟

(للاكتمال ، أستخدم المفاتيح مع TraceSource كائن بدلاً من الثابت القديم Trace الفصل ، على الرغم من أنني أشك في أنه يحدث فرقًا كبيرًا.)

هل كانت مفيدة؟

المحلول

الفرق هو ذلك TraceSwitch يعمل مع Trace الرسائل بينما SourceSwitch يعمل مع TraceSource الرسائل ، التي تربط الرسائل بمصدرها. لذلك مع SourceSwitch يمكنك تكوين مستمعيك بناءً على من أين جاءت الرسائل التتبع.

أوافق على أن الوثائق لا تشير مباشرة إلى الفرق ، ولكنها تجول في المرتبطة TraceSource وثائق الفصل وستجد هذا:

ال TraceSource يتم تحديد الفئة باسم المصدر ، وعادة ما اسم التطبيق. يمكن أن تبدأ الرسائل النزرة القادمة من مكون معين بواسطة مصدر تتبع معين ، مما يتيح تحديد جميع الرسائل القادمة من هذا المكون بسهولة.

هناك أيضًا عينة توضح لك كيفية تكوين أ SourceSwitch لإيقاف التتبع من مصدر تتبع.

نصائح أخرى

Traceswitch (الأقدم) في الأساس هو كائن tracelevel لاستخدامه في تركيبة مع فئة التتبع الثابت.

يجمع المؤثر (الأحدث) بين مفهوم tracelevel وطرق الإخراج الفعلية.

ونتيجة لذلك ، في تطبيق كبير ، يمكنك استخدام مجموعات تتبع متعددة لتكوين إعدادات التتبع لأجزاء مختلفة (واجهة المستخدم الرسومية ، DAL) من البرنامج ولكن سيتم إرسال جميع الإخراج إلى نفس تتبع (S).

مع وجود تتبع ، يمكنك الحصول على قنوات إخراج مستقلة. و API أفضل قليلاً.

قد يساعد هذا التفسير للفرق بين Tracelevel و SourceLevel:

System.Diagnostics Hidden Sourcelevels

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top