الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كتابة سجل لأحداث تطبيقك في Windows Event Log

مغلق
بدأه محمد سامر أبو سلو في 17 يونيو 2007 · 2 رد · 540 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الـ 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

-- مرفق مثال عملي عن الموضوع

TestEventLog.zip

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

شكراً لك يا الغالي بس هنالك مشكلة واجهتني

ضهرت هذه الرسالة

اقتباس
access registry not allowed

هل يمكن لاني استخدم مستخدم ضعيف يعني مو adminstrator

وشكراً

if You.needhelp = true then

msgbox ("Never Ever Ask dam Question  Before Searching in google")

Else 

msgbox ("You are Doing Good")

End if
#3
روح الفيجوال بيسك نت كتب:
ضهرت هذه الرسالة
اقتباس
access registry not allowed

هل يمكن لاني استخدم مستخدم ضعيف يعني مو adminstrator

وشكراً

99% موضوع صلاحيات الويندوز

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 17 يونيو 2007 في 22:45

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة