منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
معلومة ::: EventLog - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : معلومة ::: EventLog (/showthread.php?tid=5317)



معلومة ::: EventLog - RaggiTech - 06-10-12

كاتب الموضوع : BADRMEDIA



بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

Log Event:

ماذا تعني هذه العبارة

Log نقصد بها سجل , Event تعني حدث - إذن - Log Event تعني سجل الأحداث

وهذا المفهوم خدمة متوفرة فى أنظمة ويندوز ( XP – NT )

حيث يقوم هذا السجل بتسجيل الأحداث التى تحدث على النظام ويمكن الوصول إليها والاطلاع عليها من أداة Event Viewer الموجودة فى Administrative Tools التى بداخل Control Panel


كما تحدثنا هذا السجل يقوم بعمل Monitor للأحداث التى تحدث فى النظام وسنتحدث كيف نتعامل معه ونضيف مراقبة لتطبيق معين





معلومة ::: EventLog - RaggiTech - 06-10-12

عندما تفتح نافذة Event Viewer الموجودة فى التى بداخل Control Panel

كما فى الصورة نجد هناك أشياء أساسية يتم تسجيل أحداثها


مثل


Application
Security
System



ويمكن الوصول لهم عبر هذا الكائن برمجياً






نقوم باضافة العنصر EventLog من صندوق الأداوات

ونضيف على الفورم زر أمر Button وقائمة ListBox


ندرج هذا الكود لحدث زر الأمر



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

' نقوم بتعريف متغير من نوع الفئة

Dim evlog As System.Diagnostics.EventLog()

' نجعله يحصل على الأحداث التى تحت المراقبة

evlog = System.Diagnostics.EventLog.GetEventLogs()

' نقوم بعمل حلقة تملئ ListBox باسماء سجلات الأحداث

For Each log As System.Diagnostics.EventLog In evlog

ListBox1.Items.Add(log.Log)
Next log


End Sub



معلومة ::: EventLog - RaggiTech - 06-10-12

لو أردت أن تتأكد هل هناك سجل باسم معين موجود أم لا



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim SourceName As String = "Application"

If EventLog.SourceExists(SourceName) Then
MessageBox.Show("Found" & SourceName)
Else
MessageBox.Show("Not Found" & SourceName)
End If

End Sub

قمت بتكوين فئة وارسلتها للتأكد من وجود سجل باسم معين من المتغير SourceName

وارسلته ليتأكد من وجود السجل Application وبالفعل سيجده

غير الكلمة بسجل غير موجود ستعود لك الرسالة بعدم وجود السجل



معلومة ::: EventLog - RaggiTech - 06-10-12



كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim LogName As String = "BADRMEDIA"

If EventLog.Exists(LogName) Then

EventLog.Delete(LogName)

MessageBox.Show(LogName & "Deleted")
Else
MessageBox.Show("Not Found" & LogName)
End If

End Sub


فى هذا الكود نبحث عن سجل باسم معين وهو BADRMEDIA ونحذف فى حالة لو وجدناه



معلومة ::: EventLog - RaggiTech - 06-10-12

تعاملنا فى الأمثلة مع سجل الأحداث وأظهرنا محتوياته وتحكمنا فى بعضاً منها

لكن حان الوقت لنقوم ببناء سجل لنا ونقوم بتسجيل احداث تطبيق خاص بنا


يلزم لذلك أن نكون سجل أحداث ونعطيه اسم وأيضاً مصدر تسجيل الأحداث


-----------------------------------------------


ضف هذا الكلاس لمشروعك


كود :
Class EventLogs
Private EvLog As EventLog

Sub New(ByVal LogSource As String, ByVal LogName As String)
If EvLog Is Nothing Then
If Not EventLog.SourceExists(LogSource) Then
EventLog.CreateEventSource(LogSource, LogName)
End If

EvLog = New EventLog(LogName)
EvLog.Source = LogSource
End If
End Sub

Public Sub LogEvent(ByVal Message As String, _
ByVal EventType As EventLogEntryType)
EvLog.WriteEntry(Message, EventType)
End Sub

End Class


نشرحه

الكلاس اسمه EventLogs


عرفنا متغير من الفئة EventLog باسم EvLog


كود :
Private EvLog As EventLog


عرفنا اجرائية ووظفتها أننا نمرر لها معاملين

الأول مصدر تسجيل السجل
الثاني اسم السجل

بحيث يتم تكوين السجل فى حالة عدم وجوده



كود :
Sub New(ByVal LogSource As String, ByVal LogName As String)
If EvLog Is Nothing Then
If Not EventLog.SourceExists(LogSource) Then
EventLog.CreateEventSource(LogSource, LogName)
End If

EvLog = New EventLog(LogName)
EvLog.Source = LogSource
End If
End Sub


الاجرائية


كود :
Public Sub LogEvent(ByVal Message As String, _
ByVal EventType As EventLogEntryType)
EvLog.WriteEntry(Message, EventType)
End Sub

المسئولة عن تسجيل الأحداث

ونرسل لها الاسم والنوع




قم فى وضع هذا الكود كمتغير عام فى أول الفورم



كود :
Private Evl As New EventLogs("From BADRMEDIA Event Log", "BADRMEDIA Application")

اكتب قى حدث زر الأمر


كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try
Dim x As Integer = 50
Dim y As Integer = 0
Dim z As Integer = x / y

Catch ex As Exception
Evl.LogEvent(ex.Message & ControlChars.CrLf, EventLogEntryType.Error)
End Try

End Sub

هنا افتعلنا خطأ وهو القسمة على صفر

ونقوم بارساله لسجل الأحداث الخاص بنا


اذهب إلي

نافذة Event Viewer الموجودة فى داخل Control Panel


ستجد سجل انشا باسم BADRMEDIA Application

وبه الخطأ مسجل



الآن يمكن تسجيل ومراقبة برنامجك