الـ Event Log أو سجل الأحداث هو خدمة نظام في Windows NT, Windows 2000, Windows XP وهي تعمل تلقائيا عند بدء تشغيل الكمبيوتر وهي مسؤولة عن تسجيل أحداث النظام أو التطبيقات الهامة و الـ Event Viewer في لوحة التحكم يمكنك من معاينة تلك الأحداث التي تم تسجيلها في الـ Event Log ويأتي بالوضع الافتراضي ضمن الـ Event Log عدة فئات مبيتة مسبقا ومع ذلك يمكنك إضافة فئاتك الخاصة إليها
سنقوم بإنشاء فئة تمكننا من التعامل مع الـ Event Log وتسجيل أحداثنا الخاصة هناك
• أضف فئة Class جديدة لمشروعك و سمها EventLogger
• سنقوم بتعريف عنصر خاص بـ Event Log ضمن فئتنا
Private m_log As EventLog
• سنقوم بإنشاء مشيد للفئة يقوم بالتعريفات الأساسية التي سنحتاجها لتسجيل أحداثنا و نمرر له بارامترين الأول هو اسم مصدر سجل الحدث و الثاني اسم السجل ويكون مشيد الفئة كما يلي
Sub New(ByVal LogSource As String, ByVal LogName As String) If m_log Is Nothing Then If Not EventLog.SourceExists(LogSource) Then EventLog.CreateEventSource(LogSource, LogName) End If m_log = New EventLog(LogName) m_log.Source = LogSource End If End Sub
حيث نتأكد من وجود مصدر السجل الذي نريد استخدامه وننشئه في حالة عدم وجوده ثم نقوم بتحديد خصائص السجل الخاص بنا ( الاسم و المصدر) وبهذا نكون جاهزين لتسجيل أية أحداث تحصل في تطبيقنا
• بقي إضافة الإجراء الذي سيقوم بتسجيل أحداثنا في الـ Event Log وهو يأخذ بارامترين الأول الاسم والثاني النوع ونقوم باستخدام الدالة WriteEntry لتسجيل الحدث الخاص بنا
Public Sub LogEvent(ByVal Message As String, _ ByVal EventType As EventLogEntryType) m_log.WriteEntry(Message, EventType) End Sub
• وبهذا تكون الفئة الخاصة بنا جاهزة للاستخدام وهذا نصها الكامل
Class EventLogger Private m_log As EventLog Sub New(ByVal LogSource As String, ByVal LogName As String) If m_log Is Nothing Then If Not EventLog.SourceExists(LogSource) Then EventLog.CreateEventSource(LogSource, LogName) End If m_log = New EventLog(LogName) m_log.Source = LogSource End If End Sub Public Sub LogEvent(ByVal Message As String, _ ByVal EventType As EventLogEntryType) m_log.WriteEntry(Message, EventType) End Sub End Class
• دعنا نجرب استخدام فئتنا الجديدة
o عرف متغيرا عاما على مستوى النموذج يستخدم الفئة التي أنشأناها للتو كما يلي
Private Evl As New EventLogger("Test Event Log", "Apps")o لنفرض وجود كود يولد خطأ ما ( القسمة على صفر مثلا) يمكننا التقاط استثناء الحدث وتسجيله في الـ Event Log باستخدام الفئة EventLogger و المتغير Evl كما في المثال
Try Dim a As Integer = 34 Dim b As Integer = 0 Dim c As Integer = a / b Catch ex As Exception Evl.LogEvent(ex.Message & ControlChars.CrLf, EventLogEntryType.Error) End Try
• ويمكنك استعراض هذه الأحداث من Control Panel ثم Administrative Tools ثم Event viewer
-- مرفق مثال عملي عن الموضوع