طرق إدارة السجل المتعددة ضمن .Net
Log جزءًا لا غنى عنه من التطبيق، حيث لا يمكنها تسجيل حالة تشغيل التطبيق فحسب، بل يمكنها أيضًا تسجيل بعض الأخطاء لتسهيل تحديث التطبيق وتعديله.
هناك عدة طرق لإدارة السجلات في .Net.
1. سجل قاعدة البيانات.
2. سجل النص.
3. سجل أحداث النظام.
بادئ ذي بدء، إنه بسيط ومريح للاستخدام لسجلات قاعدة البيانات. لن أناقش الكثير هنا، وأعتقد أن أي شخص كتب مشاريع متعلقة بالبيانات سيستخدم البيانات لتسجيل بعض السجلات. ومع ذلك، فإن العيب الوحيد هو أنه يجب عليك أولاً التأكد من صحة ارتباط قاعدة البيانات الخاصة بك.
ومع ذلك، فإن هذا الضمان ليس حتميًا، لذا سأناقش هنا الحالتين الأخريين، سجلات النص وسجلات أحداث النظام.
سجل النص:
إنه سهل الاستخدام وسهل المشاهدة. العيب هو أنه ليس من المناسب إنشاء عدد كبير من السجلات، وليس من المناسب عرض محتوى السجل وتحليله. ومع ذلك، لا يزال من الممكن استخدامه في بعض الأماكن حيث لا يكون تسجيل قاعدة البيانات مناسبًا. على سبيل المثال، إخراج بعض رسائل الاختبار، وكمية صغيرة من سجلات بعض المكونات المستقلة، وما إلى ذلك.
في الظروف العادية، ولتسهيل الإدارة، يتم تصنيف ملفات السجل بوحدات من الأيام. وبهذه الطريقة، يمكن إدارة الملفات بسهولة. على سبيل المثال: يمكنك معرفة متى يكون هذا السجل من خلال اسم الملف الخاص بك، وبعد ذلك يمكنك ببساطة إجراء استعلام مشابه لقاعدة البيانات، كما أن الإدارة مريحة أيضًا. بعد كل شيء، النص بسيط جدًا بالنسبة للنظام.
يحتوي .Net على فئة تشخيصية يمكنها إضافة نص إلى Trace وDebug في شكل استماع. وبهذه الطريقة، سيتم تسجيل جميع المخرجات الموجهة إلى Trace وDegug في الملف. هذه طريقة جيدة جدًا.
باستخدام System.Diagnostics;
Debug.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("yyyyMMdd")+"..log"));
Console.Out
));
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("yyyyMMdd")+"..log"));
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(Console.Out));
الفرق هنا هو: يمكن استخدام التتبع ضمن الإصدار، بينما يمكن استخدام Debug فقط ضمن Debug.
أعتقد أن الطريقة المذكورة أعلاه هي الأكثر فائدة من بين جميع السجلات النصية. ما عليك سوى إنشاء فئة أخرى لإدارة السجل.
بالطبع، يجب عليك أيضًا ملاحظة أن الشاشة تحتاج إلى التحديث بعد 24 ساعة، ويجب عليك تنظيف الشاشة الحالية وإضافة شاشة جديدة. إنها أيضًا بسيطة.
هناك طريقة أخرى وهي كتابة النص بنفسك للإدارة. هذه الطريقة أكثر إزعاجًا بعض الشيء، ولكنها ليست صعبة.
ومع ذلك، بالإضافة إلى كونها غير ملائمة للقيام بالكثير من أعمال التسجيل، فإن السجلات النصية تعاني أيضًا من مشكلة قاتلة: تعارض العمليات!
نظرًا لأن تسجيل النص يقوم بتأمين الملف النصي الجاري كتابته، فإن البرامج الأخرى التي تريد الكتابة إلى الملف ستواجه أخطاء. في الظروف العادية، إذا كانت هناك نسخة واحدة فقط من البرنامج قيد التشغيل وتمت معالجة السجل ككائن ثابت عالمي، فلن تكون هناك أي مشكلة كبيرة. لكن النسخة الثانية من البرنامج ستفشل في البدء لأنه لا يمكن فتح الملف.
هذه ليست مشكلة غير قابلة للحل، فقط تأكد من أن لديك نسخة من البرنامج. إذا لم يكن مضمونا، فهو معقد بعض الشيء، لذلك لن نناقشه هنا بعد الآن، وسنناقش هذه المسألة في المرة القادمة عندما تتاح لنا الفرصة.
بالنسبة للمشكلة المذكورة أعلاه، أريد التخلي عن سجل النص مؤقتًا واستخدام سجل أحداث النظام للتعامل معه.
سجل أحداث النظام:
توجد فئة EventLog ضمن .net، والتي ترتبط مباشرة بسجل أحداث النظام.
واحدة بسيطة:
EventLog.WriteEntry("LogSource"،"هذا سجل اختبار.");
يمكنك كتابة حدث في النظام.
ومع ذلك، فإن استخدامه جيدًا قد يكون أمرًا صعبًا بعض الشيء. أولاً، ستكتب الطريقة المذكورة أعلاه سجل أحداث ضمن تطبيق النظام، والطريقة الافتراضية هي نوع المعلومات. هذا لا يساعد على الإدارة. يمكنك إلقاء نظرة على السجلات في أداة الإدارة وستجد عددًا كبيرًا من السجلات، ومن المستحيل العثور على سجل صغير مكتوب بنفسك.
ومع ذلك، يوفر لنا .Net عدة طرق لإدارة السجلات بشكل أفضل.
1. قم بإضافة مصدر سجل جديد.
ما هو مصدر السجل؟ في الواقع، ببساطة، إنها علامة تصنيف للسجلات. على سبيل المثال، يمكنك استخدام برنامج لاسترداد السجلات التي يكون مصدر السجل الخاص بها هو المحتوى المحدد في وقت واحد. بهذه الطريقة، طالما أنك تتذكر اسم المصدر، يمكنك قراءة السجلات وتصنيفها.
افتراضيًا، عند كتابة السجلات مباشرةً باستخدام الوظيفة الثابتة لـ EventLog، فإنك تحتاج إلى تحديد LogSource. إذا لم يكن LogSource موجودًا، فسيتم إنشاء واحد تلقائيًا ضمن التطبيق. لذلك، يعد إنشاء LogSource بهذه البساطة.
2. إضافة سجل جديد.
ما هو السجل؟ يشير السجل هنا إلى تصنيف السجل الكبير في سجل أحداث النظام. بشكل عام، يحتوي النظام على ثلاثة سجلات: التطبيق والنظام والخدمة، ولكل منها مصدر مختلف، وبالتالي يشكل نظام سجل.
لا يمكنك إنشاء سجل بشكل مستقل، لأن .NET لا يوفر أي طريقة لإنشاء سجل، يمكنك فقط استخدام الوظيفة: CreateEventSource(string, string)
لإنشاء مصدر، إذا قمت بذلك: CreateEventSource("MySource", "MyLog");
سترى فئة MyLog إضافية في مدير السجل، ثم قم بكتابة السجل على النحو التالي:
EventLog.WriteEntry("MySource"،"هذا سجل اختبار.");
يمكنك كتابة سجل ضمن فئة MyLog، حتى تتمكن من إدارة السجلات الخاصة بك بشكل جيد.
ما يحتاج إلى توضيح هو:
إذا كان المصدر موجودًا بالفعل، فسوف تفشل عملية الإنشاء. ملحوظة: بغض النظر عن سجل المصدر، طالما أن اسم المصدر موجود بالفعل، فسوف تفشل عملية الإنشاء. على سبيل المثال: إذا كان هناك سجل "Source1" في التطبيق، فلا يمكنك إنشاء سجل يسمى "Source1" في سجلات أخرى. بالإضافة إلى ذلك: لا يمكن حذف السجلات التي تقوم بإنشائها باستخدام البرنامج في مدير السجلات (يمكن حذف الرسائل، ولكن لا يمكن حذف فئات السجل). الطريقة هي أنه لا يزال بإمكانك استخدام برنامج لحذفه أو حذفه من السجل. موقعه: [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog]
ألق نظرة على التسجيل، ربما ستفهم شيئًا ما.
الخطوة الأخيرة هي استخدام كائن مثيل السجل لكتابة السجل. يمكنك تحديد اسم السجل واسم المصدر لكتابة السجلات، ولكن يجب أن تدرك أن السجل والمصدر يجب أن يتطابقا، وإلا سيحدث خطأ. وهذا أكثر تعقيدًا قليلًا من التسجيل المباشر باستخدام الأساليب الثابتة، ولكن لديك المزيد من الحرية.
عيب سجل أحداث النظام هو أنه يتم حفظ السجل لمدة ثلاثة أشهر فقط ويصعب إدارته. سيكون من الأفضل أن تتمكن من إدارة الخادم مباشرة، أو تشغيله محليًا، وإلا فسيتعين عليك كتابة بعض التعليمات البرمجية لإدارة السجلات بنفسك. بالطبع، إذا كان من الممكن تصدير بعض السجلات المهمة إلى ملفات أخرى.
فوائده كثيرة :
1. ليست هناك حاجة للاتصال بقاعدة البيانات، وستكون الكفاءة أعلى، ولن تكون هناك مشكلة فشل الوصول إلى قاعدة البيانات.
2. لن يكون هناك أي تعارض في العمليات، إنه سجل نظام، بغض النظر عن التطبيق، يمكنه كتابة السجلات.
3. يمكن كتابة السجلات المتوفرة عالميًا مباشرةً بغض النظر عن مكان وجودها وتكون قابلة للقراءة. ولذلك يمكن اعتباره بمثابة منصة اتصالات الرسائل. (بالطبع، ربما فقط أولئك الذين يعانون من بعض مشاكل الدماغ هم من سيفعلون ذلك.) ومع ذلك، أريد فقط أن أشرح: يمكن قراءة السجل المكتوب بواسطة العملية "أ" مباشرة من خلال العملية "ب".
حسنًا، هذا كل ما يتعلق بالسجل هذه المرة.
http://www.cnblogs.com/WuCountry/archive/2006/08/22/483090.html