أين يجب أن أضع TraceSwitch على مستوى المشروع أو التطبيق في تصميمي؟
-
03-07-2019 - |
سؤال
أحاول تحسين برنامجي ببعض وظائف التسجيل التي يوفرها System.Diagnostics
.نظرًا لأن الحل الخاص بي يتكون من عدة مشاريع، فقد أردت إنشاء تبديل للتطبيق بأكمله وواحدًا لكل مشروع.
والسؤال الآن هو كيف يمكنني تحقيق ذلك وأين يجب أن أضع تعريف التبديل؟
بدءًا من التبديل على مستوى التطبيق، نظرًا لعدم وجود شيء مثل المتغيرات العامة في C# كما فهمت، كيف يمكنني تحقيق ذلك؟
سوف يضع
static TraceSwitch ApplicationSwitch = new TraceSwitch("Application", "Enables logging in the whole application.");
حل هذه المشكلة مرة واحدة في كل فصل أم أن هذا سيُنشئ عددًا كبيرًا من المفاتيح كما توجد فئات، كل منها يحمل نفس الاسم؟(تخميني هو الأخير)
أم يجب أن أضع التهيئة مرة واحدة في فصل دراسي منفصل
static class GlobalSwitch
{
static TraceSwitch Application = new TraceSwitch("Application", "Enables logging in the whole application.");
}
والرجوع إليه من كل فئة أخرى مثل هذا
public OtherClass
{
static TraceSwitch Application = GlobalSwitch.Application;
}
قد يؤدي هذا إلى حل مشكلة وجود مفتاح واحد للمشروع بأكمله، ولكن هل هذه ممارسة جيدة؟
فيما يتعلق بالتبديل على مستوى التطبيق، يجب أن أشير إلى المشروع الذي يحتوي على ملف GlobalSwitch
الفصل الدراسي في كل مشروع آخر، والذي أود تجنبه إن أمكن.
بعض الدلائل حول كيفية القيام بذلك بالطريقة الذكية ستكون موضع تقدير كبير.
المحلول
عادةً ما أقوم بلف مفاتيح التتبع (ووظائف السجل) في مجموعة تسجيل مركزية، مما يعرض واجهة ثابتة للمفاتيح (المفاتيح) وأيضًا أساليب السجل الثابتة التي ستستدعي وظيفة السجل الأساسية المستخدمة (عادةً وظائف Trace.Write).