أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية إدارة سجلات الأحداث باستخدام Visual Basic .NET أو Visual Basic 2005

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية814564
للحصول على إصدار Microsoft Visual C# .NET من هذه المقالة، راجع 815314.
الموجز
توضح هذه المقالة خطوة بخطوة حول كيفية الوصول إلى تخصيص سجلات أحداث Windows باستخدام Microsoft .NET Framework. يمكنك التفاعل مع سجلات أحداث Windows "باستخدام فئة سجل الأحداث. يمكنك استخدام فئة سجل الأحداث إجراء الأشياء التالية:
  • قراءة من سجلات موجودة.
  • كتابة إدخالات سجلات الأحداث.
  • إنشاء أو حذف مصادر الأحداث.
  • حذف سجلات.
  • استجابة تسجيل إدخالات.
توضح هذه المقالة أيضًا كيفية إنشاء سجلات جديدة أثناء إنشاء مصدر حدث.


متطلبات


توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة و حزم الخدمات المطلوبة:
  • إطار عمل Microsoft .NET
  • Microsoft Visual Basic .NET أو Microsoft Visual Basic 2005

تفترض هذه المقالة كنت معتاداً على المواضيع التالية:
  • Microsoft Visual Basic .NET أو Microsoft Visual Basic 2005 البناء
  • Microsoft Visual Studio .NET أو بيئة Microsoft Visual Studio 2005
  • خطأ معالجة في .NET Framework

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


يمكنك البحث عن سجلات موجودة على جهاز كمبيوتر باستخدام أسلوب GetEventLogs المشتركة الفئة سجل الأحداث. أسلوب GetEventLogs يبحث عن كافة سجلات الأحداث على الكمبيوتر المحلي ومن ثم يقوم بإنشاء صفيف من الكائنات سجل الأحداث التي تحتوي على القائمة. مثال التعليمة البرمجية التالية يسترد قائمة سجلات على الكمبيوتر المحلي ومن ثم يعرض أسماء السجلات في إطار وحدة تحكم: remoteEventLogs()
      Dim remoteEventLogs() As EventLog      'Gets logs on the local machine, give remote machine name to get the logs on the remote machine      remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName)      Console.WriteLine("Number of logs on computer: " & remoteEventLogs.Length)      'Display the list of event logs      Dim log As EventLog      For Each log In remoteEventLogs         Console.WriteLine("Log: " & log.Log)      Next log

القراءة والكتابة سجلات من المحلي إلى "و" النظام البعيد


قراءة سجلات


لقراءة سجل الأحداث استخدام خاصية إدخالات فئة سجل الأحداث. خاصية إدخالات فئة سجل الأحداث مجموعة من كافة الإدخالات في سجل الأحداث. يوضح المثال التعليمات البرمجية التالي كيفية تكرار خلال هذه المجموعة وكيفية قراءة كافة الإدخالات الموجودة في السجل المحدد:
      ' Log type can be Application, Security, System or any other custom log      ' Select the log type you want to read      Dim logtype As String = "Application"      ' In the constructor of the eventlog, pass the log type and the computer name       ' from which you want to read the logs       Dim evtLog As New EventLog(logtype, System.Environment.MachineName)      Dim lastlogtoshow As Integer = evtLog.Entries.Count      If lastlogtoshow <= 0 Then         Console.WriteLine("There are no event logs in the log : " & logtype)         Exit Sub      End If      ' Read the last record in the specified log       Dim currentEntry As EventLogEntry      Dim i As Integer      ' Show Last 2 entries. You can similarly write the log to a file.      For i = evtLog.Entries.Count - 1 To lastlogtoshow - 2 Step -1         currentEntry = evtLog.Entries(i)         Console.WriteLine("Event Id is : " & currentEntry.EventID)         Console.WriteLine("Entry type is : " & currentEntry.EntryType.ToString())         Console.WriteLine("Message is :  " & currentEntry.Message & vbCrLf)      Next      evtLog.Close()

كتابة سجلات


لكتابة سجل الأحداث "، استخدم الطريقة WriteEntry الفئة سجل الأحداث. كتابة سجل الأحداث بنجاح, تأكد من التطبيق الخاص بك لديه حق الوصول لسجل الكتابة إلى. لمزيد من المعلومات حول الأذونات التي يجب أن يكون لديك للقراءة والكتابة في سجلات الأحداث قم بزيارة موقع Microsoft التالي على الويب.

Ramification الأمان من سجلات الأحداث
http://msdn2.microsoft.com/en-us/library/4xz6w79h(vs.71).aspx
يجب تعيين الخاصية Source على مثيل مكون "سجل الأحداث الخاص بك قبل كتابة إدخالات إلى سجل. عندما تقوم بكتابة مكون الخاص بك إدخال ، النظام تلقائياً يتحقق تسجيل مصدر الذي حددته مع سجل الأحداث الكتابة المكون إلى. المكالمات النظام ثم CreateEventSource إذا لزم الأمر. لكتابة سجل الأحداث التي يجب تمرير اسم الجهاز حيث يوجد السجل. في مثال التعليمة البرمجية التالي خاصية MachineName فئة بيئة يحدد اسم الجهاز المحلي:
        ' Check if the source exists       If Not EventLog.SourceExists("MySystemSource", System.Environment.MachineName) Then         EventLog.CreateEventSource("MySystemSource", "System", System.Environment.MachineName)      End If      Dim evtLog As New EventLog("System", System.Environment.MachineName, "MySystemSource")      'writing to system log, in the similar way you can write to other       'logs for which you have appropriate permissions to write      evtLog.WriteEntry("warning is written to system log", EventLogEntryType.Warning, CInt(10001))      Console.WriteLine("Log written to the system log.")      evtLog.Close()

مسح سجلات


عند امتلاء سجل الأحداث, يتوقف عن تسجيل معلومات الحدث جديدة أو تبدأ في الكتابة فوق الإدخالات السابقة. إذا توقف تسجيل الحدث يمكنك مسح السجل إدخالات ثم السماح بأن بدء تسجيل الأحداث مرة أخرى. لمسح إدخالات سجل الأحداث "، يجب أن يكون لديك أذونات مسؤول لهذا الكمبيوتر الذي عليه هذا السجل. استدعاء الأسلوب مسح على مثيل مكون سجل الأحداث.

domonstrates مثال التعليمة البرمجية التالية كيفية مسح سجل:
      ' Create an EventLog instance and pass log name and MachineName on which the log resides      Dim evtLog As New EventLog("Security", System.Environment.MachineName)      evtLog.Clear()      evtLog.Close()

إنشاء و حذف سجلات مخصص

إنشاء تسجيل مخصص

استخدام أسلوب CreateEventSource إنشاء معالج الأحداث المخصصة الخاصة بك. قبل إنشاء سجل الأحداث استخدام الأسلوب SourceExists تحقق من أن المصدر الذي تستخدمه بالفعل وجود ثم استدعاء CreateEventSource. إذا حاولت إنشاء سجل الأحداث بالفعل يتم طرح خطأ System.ArgumentException.

يوضح المثال التعليمات البرمجية التالي كيفية إنشاء تسجيل مخصص:
      ' Check if the log already exist      If Not EventLog.SourceExists("MyOldSource", System.Environment.MachineName) Then         ' Creating a new log         EventLog.CreateEventSource("MyOldSource", "MyNewLog", System.Environment.MachineName)         Console.WriteLine("New event log created successfully.")      End If

حذف سجل مخصص

استخدم الأسلوب حذف الفئة سجل الأحداث إلى حذف سجل الأحداث. قد كتابة أكثر من مصدر سجل الأحداث. لذلك، قبل حذف سجل مخصصة تأكد من مصادر أخرى الكتابة إلى ذلك السجل.

يوضح المثال التعليمات البرمجية التالي كيفية حذف سجل مخصص: logName
      Dim logName As String = "MyNewLog"      If EventLog.SourceExists("MyOldSource", System.Environment.MachineName) Then         logName = EventLog.LogNameFromSourceName("MyOldSource", System.Environment.MachineName)         EventLog.DeleteEventSource("MyOldSource", System.Environment.MachineName)         EventLog.Delete(logName, System.Environment.MachineName)         Console.WriteLine(logName & " deleted.")      End If

تظهر أحداث إعلامات

يمكنك تلقي إعلام حدث عند كتابة إدخال إلى سجل معين. للقيام بذلك، يقوم بتطبيق معالج الأحداث EntryWritten لمثيل سجل الأحداث. أيضاً، قم بتعيين الخاصية EnableRaisingEvents إلى true.

يوضح المثال التعليمات البرمجية التالي كيفية تلقي إعلامات أحداث:
      If Not EventLog1.SourceExists("MySource", System.Environment.MachineName) Then         EventLog1.CreateEventSource("MySource", "Application", System.Environment.MachineName)         Console.WriteLine("CreatingEventSource")      End If      'Enable EnableRaisingEvents to true      EventLog1.Log = "Application"						EventLog1.EnableRaisingEvents = True      EventLog1.WriteEntry("MySource", "EntryWritten event is fired", EventLogEntryType.Information)   End Sub
ملاحظة أنه يمكن فقط تلقي إعلامات أحداث عند إدخالات مكتوبة على الكمبيوتر المحلي. لا يمكن تلقي إعلامات للإدخالات التي تمت كتابتها على أجهزة الكمبيوتر البعيدة.


إكمال رمز قائمة

Imports System.DiagnosticsImports System.SecurityImports System.ComponentModelImports System.IOPublic Class Form1   Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code "   Public Sub New()      MyBase.New()      'The Windows Form Designer requires this call.      InitializeComponent()      'Add any initialization after the InitializeComponent() call   End Sub   'Form overrides dispose to clean up the component list.   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)      If disposing Then         If Not (components Is Nothing) Then            components.Dispose()         End If      End If      MyBase.Dispose(disposing)   End Sub   'Required by the Windows Form Designer   Private components As System.ComponentModel.IContainer   'NOTE: The Windows Form Designer requires the following procedure   'It can be modified using the Windows Form Designer.     'Do not modify it using the code editor.   Friend WithEvents EventLog1 As System.Diagnostics.EventLog   Friend WithEvents btnListLog As System.Windows.Forms.Button   Friend WithEvents btnReadLog As System.Windows.Forms.Button   Friend WithEvents btnWriteLog As System.Windows.Forms.Button   Friend WithEvents btnClearLog As System.Windows.Forms.Button   Friend WithEvents btnCreateLog As System.Windows.Forms.Button   Friend WithEvents btnDeleteLog As System.Windows.Forms.Button   Friend WithEvents btnRecNotice As System.Windows.Forms.Button   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()      Me.btnReadLog = New System.Windows.Forms.Button()      Me.btnWriteLog = New System.Windows.Forms.Button()      Me.btnClearLog = New System.Windows.Forms.Button()      Me.btnCreateLog = New System.Windows.Forms.Button()      Me.btnDeleteLog = New System.Windows.Forms.Button()      Me.btnRecNotice = New System.Windows.Forms.Button()      Me.EventLog1 = New System.Diagnostics.EventLog()      Me.btnListLog = New System.Windows.Forms.Button()      CType(Me.EventLog1, System.ComponentModel.ISupportInitialize).BeginInit()      Me.SuspendLayout()      '      'btnReadLog      '      Me.btnReadLog.Location = New System.Drawing.Point(48, 54)      Me.btnReadLog.Name = "btnReadLog"      Me.btnReadLog.Size = New System.Drawing.Size(152, 24)      Me.btnReadLog.TabIndex = 0      Me.btnReadLog.Text = "Read Event Logs"      '      'btnWriteLog      '      Me.btnWriteLog.Location = New System.Drawing.Point(48, 86)      Me.btnWriteLog.Name = "btnWriteLog"      Me.btnWriteLog.Size = New System.Drawing.Size(152, 24)      Me.btnWriteLog.TabIndex = 1      Me.btnWriteLog.Text = "Write Event Logs"      '      'btnClearLog      '      Me.btnClearLog.Location = New System.Drawing.Point(48, 118)      Me.btnClearLog.Name = "btnClearLog"      Me.btnClearLog.Size = New System.Drawing.Size(152, 24)      Me.btnClearLog.TabIndex = 2      Me.btnClearLog.Text = "Clear Logs"      '      'btnCreateLog      '      Me.btnCreateLog.Location = New System.Drawing.Point(48, 150)      Me.btnCreateLog.Name = "btnCreateLog"      Me.btnCreateLog.Size = New System.Drawing.Size(152, 24)      Me.btnCreateLog.TabIndex = 3      Me.btnCreateLog.Text = "Create Custom Log"      '      'btnDeleteLog      '      Me.btnDeleteLog.Location = New System.Drawing.Point(48, 182)      Me.btnDeleteLog.Name = "btnDeleteLog"      Me.btnDeleteLog.Size = New System.Drawing.Size(152, 24)      Me.btnDeleteLog.TabIndex = 4      Me.btnDeleteLog.Text = "Delete Custom Log"      '      'btnRecNotice      '      Me.btnRecNotice.Location = New System.Drawing.Point(48, 214)      Me.btnRecNotice.Name = "btnRecNotice"      Me.btnRecNotice.Size = New System.Drawing.Size(152, 24)      Me.btnRecNotice.TabIndex = 5      Me.btnRecNotice.Text = "Receive Event Notifications"      '      'EventLog1      '      Me.EventLog1.EnableRaisingEvents = True      Me.EventLog1.Log = "Application"      Me.EventLog1.MachineName = System.Environment.MachineName      Me.EventLog1.SynchronizingObject = Me      '      'btnListLog      '      Me.btnListLog.Location = New System.Drawing.Point(48, 22)      Me.btnListLog.Name = "btnListLog"      Me.btnListLog.Size = New System.Drawing.Size(152, 24)      Me.btnListLog.TabIndex = 6      Me.btnListLog.Text = "List Event Logs"      '      'Form1      '      Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)      Me.ClientSize = New System.Drawing.Size(256, 266)      Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnListLog, Me.btnRecNotice, Me.btnDeleteLog, Me.btnCreateLog, Me.btnClearLog, Me.btnWriteLog, Me.btnReadLog})      Me.Name = "Form1"      Me.Text = "Form1"      CType(Me.EventLog1, System.ComponentModel.ISupportInitialize).EndInit()      Me.ResumeLayout(False)   End Sub#End Region   Private Sub btnReadLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadLog.Click      'logType can be Application, Security, System or any other Custom Log      Dim logType As String = "Application"      'In this case the EventLog constructor is passed a string variable for the log name and       'second argument mention the computer name from which you want to read the logs       'that you have appropriate permissions for      Dim ev As New EventLog(logType, System.Environment.MachineName)      Dim LastLogToShow As Integer = ev.Entries.Count      If LastLogToShow <= 0 Then         Console.WriteLine("No Event Logs in the Log :" & logType)         Exit Sub      End If      ' read the last 2 records in the specified log       Dim i As Integer      For i = ev.Entries.Count - 1 To LastLogToShow - 2 Step -1         Dim CurrentEntry As EventLogEntry = ev.Entries(i)         Console.WriteLine("Event ID : " & CurrentEntry.EventID)         Console.WriteLine("Entry Type : " & CurrentEntry.EntryType.ToString())         Console.WriteLine("Message :  " & CurrentEntry.Message & vbCrLf)      Next      ev.Close()      ' Similarly, you can loop through all the entries in the log by using      ' the entries collection, as shown in the following commented code.      ' For Each entry In ev.Entries      ' Next   End Sub   Private Sub btnWriteLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWriteLog.Click      ' When writing to an event log, you must pass the machine name where       ' the log resides.  Here the MachineName Property of the Environment class       ' is used to determine the name of the local machine.  Assuming you have       ' the appropriate permissions, it is also easy to write to event logs on       ' other machines.      'Check if the Source exists       If Not EventLog.SourceExists("MySystemSource", System.Environment.MachineName) Then         EventLog.CreateEventSource("MySystemSource", "System", System.Environment.MachineName)      End If      Dim ev As New EventLog("System", System.Environment.MachineName, "MySystemSource")      'Writing to system log, in the similar way you can write to other       'logs that you have appropriate permissions to write to      ev.WriteEntry("Warning is written to system Log", EventLogEntryType.Warning, CInt(10001))      MessageBox.Show("Warning is written to System Log")      ev.Close()   End Sub   Private Sub btnClearLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClearLog.Click      ' Create an EventLog instance and pass the log name and MachineName on which the log resides.      Dim ev As New EventLog("Security", System.Environment.MachineName)      ev.Clear()      ev.Close()   End Sub   Private Sub btnCreateLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreateLog.Click      'Create the source, if it does not already exist.      If Not EventLog.SourceExists("MyOldSource", System.Environment.MachineName) Then         'Creating a new log         EventLog.CreateEventSource("MyOldSource", "MyNewLog", System.Environment.MachineName)         Console.WriteLine("CreatingEventSource")      End If   End Sub   Private Sub btnDeleteLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteLog.Click      Dim logName As String = "MyNewLog"      If EventLog.SourceExists("MyOldSource", System.Environment.MachineName) Then         logName = EventLog.LogNameFromSourceName("MyOldSource", System.Environment.MachineName)         EventLog.DeleteEventSource("MyOldSource", System.Environment.MachineName)         EventLog.Delete(logName, System.Environment.MachineName)         Console.WriteLine(logName & " deleted.")      End If   End Sub   Private Sub btnRecNotice_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRecNotice.Click      ' Create the source if it does not already exist.      If Not EventLog1.SourceExists("MySource", System.Environment.MachineName) Then         EventLog1.CreateEventSource("MySource", "Application", System.Environment.MachineName)         Console.WriteLine("CreatingEventSource")      End If      'Enable EnableRaisingEvents to true      EventLog1.Log = "Application"						EventLog1.EnableRaisingEvents = True      EventLog1.WriteEntry("MySource", "EntryWritten event is fired", EventLogEntryType.Information)   End Sub   Private Sub EventLog1_EntryWritten(ByVal sender As Object, ByVal e As System.Diagnostics.EntryWrittenEventArgs) Handles EventLog1.EntryWritten      If e.Entry.Source = "MySource" Then         Console.WriteLine("Entry written by my app. Message: " & e.Entry.Message)      End If   End Sub   Private Sub btnListLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListLog.Click      Dim remoteEventLogs() As EventLog      'Gets logs on the local machine, give remote machine name to get the logs on the remote machine      remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName)      Console.WriteLine("Number of logs on computer: " & remoteEventLogs.Length)      Dim log As EventLog      For Each log In remoteEventLogs         Console.WriteLine("Log: " & log.Log)      Next log   End SubEnd Class
ملاحظة يجب تغيير التعليمات البرمجية في Visual Basic 2005. بشكل افتراضي، يُنشئ Visual Basic ملفين المشروع عند قيامك بإنشاء مشروع نماذج Windows. إذا تم تسمية النموذج Form1, يتم تسمية الملفين التي تمثل النموذج Form1.vb و Form1.Designer.vb. كتابة التعليمات البرمجية في ملف Form1.vb. مصمم نماذج Windows بكتابة التعليمة البرمجية في ملف Form1.Designer.vb. مصمم نماذج Windows يستخدم الكلمة الأساسية الجزئية لتقسيم تطبيق Form1 إلى ملفين منفصلة. يمنع هذا السلوك في التعليمات البرمجية التي تم إنشاؤها مصمم من يتم interspersed مع التعليمات البرمجية الخاصة بك.

لمزيد من المعلومات حول تحسينات اللغة 2005 Visual Basic الجديدة قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب: لمزيد من المعلومات حول فئات جزئية "و" مصمم نماذج Windows قم بزيارة موقع MSDN التالي:

تحقق من النتائج

verfiy النتائج ، اتبع الخطوات التالية:
  1. إنشاء تطبيق Windows جديد باستخدام Visual Basic .NET أو 2005 Visual Basic.

    افتراضياً، يتم إنشاء Form1.vb.
  2. استبدال الرمز في Form1.vb التعليمات البرمجية الموجودة في قسم "إدخال رمز اكتمال" في هذه المقالة.
  3. من القائمة تصحيح ، انقر فوق "ابدأ" لتشغيل التطبيق.
  4. تنفيذ إجراءات على Form1.vb.
  5. للتحقق من النتيجة فتح "مستكشف الملقم". للقيام بذلك، انقر فوق "مستكشف الملقم" في القائمة عرض.
  6. قم بتوسيع عقدة ملقمات ثم قم بتوسيع اسم الكمبيوتر الخاص بك.
  7. ضمن الاسم الكمبيوتر ، قم بتوسيع سجلات الأحداث.

    ملاحظة عقدة ملقمات Explorer الملقم غير متوفر في Visual Basic .NET أكاديمي. يمكنك استخدام Windows Event Viewer لعرض نتائج التطبيق الخاص بك.
  8. استخدام "مستكشف الملقم" للتحقق من أن يتم تنفيذ كافة الخطوات في هذا الإجراء بشكل صحيح.
مراجع
لمزيد من المعلومات، قم بزيارة موقع Microsoft التالي على الويب:

فئة سجل الأحداث
http://msdn2.microsoft.com/en-us/library/system.diagnostics.eventlog(vs.71).aspx

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 814564 - آخر مراجعة: 11/14/2007 06:30:55 - المراجعة: 2.7

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbeventservice kbnetwork kbmanaged kbprogramming kbeventlog kbhowtomaster KB814564 KbMtar
تعليقات
ype="text/JavaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" >&t=">etLanguage(language);" class="ng-binding" id="language-es-py">Paraguay - Español
Venezuela - Español
/c1.microsoft.com/c.gif?DI=4050&did=1&t=">id=1&t=">