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

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

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

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

متطلبات

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

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


يمكنك البحث عن سجلات موجودة على جهاز كمبيوتر بواسطة استخدام الأسلوب المشترك GetEventLogs الفئة سجل الأحداث. أسلوب GetEventLogs يبحث عن كافة سجلات الأحداث على الكمبيوتر المحلي ويقوم بإنشاء صفيف من الكائنات سجل الأحداث التي تحتوي على القائمة. المثال التالي يسترد قائمة سجلات على الكمبيوتر المحلي ومن ثم يعرض اسم السجل في إطار وحدة تحكم.
EventLog[] remoteEventLogs; // Gets logs on the local computer, gives remote computer name to get the logs on the remote computer.remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName);Console.WriteLine("Number of logs on computer: " + remoteEventLogs.Length);for ( int i=0; i<remoteEventLogs.Length; i++ )   Console.WriteLine("Log: " + remoteEventLogs[i].Log);

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

قراءة سجلات

لقراءة سجل الأحداث استخدام الخصائص إدخالات الفئة سجل الأحداث. فئة سجل الأحداث الخاصية إدخالات عبارة عن مجموعة من كافة الإدخالات في سجل الأحداث. يمكن تكرار خلال هذه المجموعة ثم قراءة كافة الإدخالات الموجودة في السجل المحدد. توضح التعليمة البرمجية التالية كيفية القيام بذلك: //logType
      //logType can be Application, Security, System or any other Custom Log.string logType = "Application";			EventLog ev = new EventLog(logType, System.Environment.MachineName);int LastLogToShow = ev.Entries.Count;if ( LastLogToShow <= 0 )Console.WriteLine("No Event Logs in the Log :" + logType);// Read the last 2 records in the specified log. int i;for ( i = ev.Entries.Count - 1; i>= LastLogToShow - 2; i--){	EventLogEntry CurrentEntry = ev.Entries[i];	Console.WriteLine("Event ID : " + CurrentEntry.EventID);	Console.WriteLine("Entry Type : " + CurrentEntry.EntryType.ToString());	Console.WriteLine("Message :  " + CurrentEntry.Message + "\n");}	ev.Close();

كتابة سجلات

لكتابة سجل الأحداث "، استخدم الطريقة WriteEntry الفئة سجل الأحداث. لكتابة سجل الأحداث بنجاح ، يجب أن يكون التطبيق حق الوصول للكتابة إلى السجل الذي تحاول الكتابة إلى. لمزيد من المعلومات حول الأذونات التي يجب أن يكون لديك للقراءة والكتابة في سجل أحداث قم بزيارة موقع Microsoft التالي على الويب.
الأمان Ramification من سجلات الأحداث
http://msdn2.microsoft.com/en-us/library/4xz6w79h(vs.71).aspx
يجب عليك تعيين الخاصية Source على مثيل مكون "سجل الأحداث الخاص بك يمكنك كتابة الإدخالات إلى سجل. عندما تقوم بكتابة مكون الخاص بك إدخال ، يتحقق من النظام "تلقائيًا إذا كان مصدر البيانات الذي حددته تسجيل سجل الأحداث أن المكون الكتابة إلى ومن ثم باستدعاء CreateEventSource (إذا كان يجب استدعاء CreateEventSource). //See
  //See if the source exists. if ( ! ( EventLog.SourceExists("MySystemSource", System.Environment.MachineName)))EventLog.CreateEventSource("MySystemSource", "System", System.Environment.MachineName);        EventLog ev = 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, 10001);MessageBox.Show("Warning is written to System Log");ev.Close();   

مسح سجلات

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

ملاحظة لمسح إدخالات سجل الأحداث "، يجب أن يكون لديك أذونات المسؤول على الكمبيوتر حيث is. سجل
     //Create an EventLog instance and pass log name and MachineName where the log resides.EventLog ev = new EventLog("Security", System.Environment.MachineName);ev.Clear();ev.Close(); 

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

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

يمكنك استخدام الأسلوب CreateEventSource إنشاء معالج الأحداث المخصصة الخاصة بك. قبل إنشاء سجل الأحداث استخدام الأسلوب SourceExists تحقق من أن مصدر البيانات الذي تستخدمه بالفعل وجود ثم استدعاء CreateEventSource. إذا حاولت إنشاء سجل الأحداث بالفعل يتم طرح System.ArgumentException.
     // Create the source, if it does not already exist.if (! (EventLog.SourceExists("MyOldSource", System.Environment.MachineName)))		EventLog.CreateEventSource("MyOldSource", "MyNewLog", System.Environment.MachineName);Console.WriteLine("CreatingEventSource"); 

حذف سجل مخصص

لحذف سجل الأحداث يمكنك استخدام الأسلوب حذف الفئة سجل الأحداث. قد كتابة أكثر من مصدر سجل الأحداث. لذلك، قبل حذف سجل مخصصة تأكد من وجود أية مصادر أخرى الكتابة إلى ذلك السجل.
     string logName = "MyNewLog";if ( EventLog.SourceExists("MyOldSource", System.Environment.MachineName)){	logName = EventLog.LogNameFromSourceName("MyOldSource", System.Environment.MachineName);	EventLog.DeleteEventSource("MyOldSource", System.Environment.MachineName);	EventLog.Delete(logName, System.Environment.MachineName);	Console.WriteLine(logName + " deleted.");}    

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

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

ملاحظة يمكنك تلقي إعلامات أحداث فقط عندما يتم كتابة إدخالات على الكمبيوتر المحلي. لا يمكن تلقي إعلامات للإدخالات التي تتم كتابتها على أجهزة الكمبيوتر البعيدة.

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

using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Security;using System.IO;using System.Diagnostics;namespace WindowsApplication1{	/// <summary>	/// Summary description for Form1.	/// </summary>	public class Form1 : System.Windows.Forms.Form	{		private System.Diagnostics.EventLog eventLog1;		private System.Windows.Forms.Button btnListLog;		private System.Windows.Forms.Button btnReadLog;		private System.Windows.Forms.Button btnWriteLog;		private System.Windows.Forms.Button btnClearLog;		private System.Windows.Forms.Button btnCreateLog;		private System.Windows.Forms.Button btnDeleteLog;		private System.Windows.Forms.Button btnRecNotice;				/// <summary>		/// Required designer variable.		/// </summary>		private System.ComponentModel.Container components = null;		public Form1()		{			//			// Required for Windows Form Designer support.			//			InitializeComponent();			//			// TODO: Add any constructor code after InitializeComponent call.			//		}		/// <summary>		/// Clean up any resources that are being used.		/// </summary>		protected override void Dispose( bool disposing )		{			if( disposing )			{				if (components != null) 				{					components.Dispose();				}			}			base.Dispose( disposing );		}		#region Windows Form Designer generated code		/// <summary>		/// Required method for Designer support - do not modify		/// the contents of this method with the code editor.		/// </summary>		private void InitializeComponent()		{			this.eventLog1 = new System.Diagnostics.EventLog();			this.btnListLog = new System.Windows.Forms.Button();			this.btnReadLog = new System.Windows.Forms.Button();			this.btnWriteLog = new System.Windows.Forms.Button();			this.btnClearLog = new System.Windows.Forms.Button();			this.btnCreateLog = new System.Windows.Forms.Button();			this.btnDeleteLog = new System.Windows.Forms.Button();			this.btnRecNotice = new System.Windows.Forms.Button();			((System.ComponentModel.ISupportInitialize)(this.eventLog1)).BeginInit();			this.SuspendLayout();			// 			// eventLog1			// 			this.eventLog1.MachineName = System.Environment.MachineName;			this.eventLog1.SynchronizingObject = this;			this.eventLog1.EntryWritten += new System.Diagnostics.EntryWrittenEventHandler(this.eventLog1_EntryWritten);			// 			// btnListLog			// 			this.btnListLog.Location = new System.Drawing.Point(32, 16);			this.btnListLog.Name = "btnListLog";			this.btnListLog.Size = new System.Drawing.Size(152, 23);			this.btnListLog.TabIndex = 0;			this.btnListLog.Text = "List Event Logs";			this.btnListLog.Click += new System.EventHandler(this.btnListLog_Click);			// 			// btnReadLog			// 			this.btnReadLog.Location = new System.Drawing.Point(32, 46);			this.btnReadLog.Name = "btnReadLog";			this.btnReadLog.Size = new System.Drawing.Size(152, 23);			this.btnReadLog.TabIndex = 1;			this.btnReadLog.Text = "Read Event Logs";			this.btnReadLog.Click += new System.EventHandler(this.btnReadLog_Click);			// 			// btnWriteLog			// 			this.btnWriteLog.Location = new System.Drawing.Point(32, 77);			this.btnWriteLog.Name = "btnWriteLog";			this.btnWriteLog.Size = new System.Drawing.Size(152, 23);			this.btnWriteLog.TabIndex = 2;			this.btnWriteLog.Text = "Write Event Logs";			this.btnWriteLog.Click += new System.EventHandler(this.btnWriteLog_Click);	 		// 			// btnClearLog			// 			this.btnClearLog.Location = new System.Drawing.Point(32, 106);			this.btnClearLog.Name = "btnClearLog";			this.btnClearLog.Size = new System.Drawing.Size(152, 23);			this.btnClearLog.TabIndex = 3;			this.btnClearLog.Text = "Clear Logs";			this.btnClearLog.Click += new System.EventHandler(this.btnClearLog_Click);			// 			// btnCreateLog			// 			this.btnCreateLog.Location = new System.Drawing.Point(32, 137);			this.btnCreateLog.Name = "btnCreateLog";			this.btnCreateLog.Size = new System.Drawing.Size(152, 23);			this.btnCreateLog.TabIndex = 4;			this.btnCreateLog.Text = "Create Custom Logs";			this.btnCreateLog.Click += new System.EventHandler(this.btnCreateLog_Click);			// 			// btnDeleteLog			// 			this.btnDeleteLog.Location = new System.Drawing.Point(32, 168);			this.btnDeleteLog.Name = "btnDeleteLog";			this.btnDeleteLog.Size = new System.Drawing.Size(152, 23);			this.btnDeleteLog.TabIndex = 5;			this.btnDeleteLog.Text = "Delete Custom Logs";			this.btnDeleteLog.Click += new System.EventHandler(this.btnDeleteLog_Click);			// 			// btnRecNotice			// 			this.btnRecNotice.Location = new System.Drawing.Point(32, 199);			this.btnRecNotice.Name = "btnRecNotice";			this.btnRecNotice.Size = new System.Drawing.Size(152, 23);			this.btnRecNotice.TabIndex = 6;			this.btnRecNotice.Text = "Receive Event Notifications";			this.btnRecNotice.Click += new System.EventHandler(this.btnRecNotice_Click);			// 			// Form1			// 			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);			this.ClientSize = new System.Drawing.Size(216, 237);			this.Controls.Add(this.btnRecNotice);			this.Controls.Add(this.btnDeleteLog);			this.Controls.Add(this.btnCreateLog);			this.Controls.Add(this.btnClearLog);			this.Controls.Add(this.btnWriteLog);			this.Controls.Add(this.btnReadLog);			this.Controls.Add(this.btnListLog);			this.Name = "Form1";			this.Text = "Form1";			((System.ComponentModel.ISupportInitialize)(this.eventLog1)).EndInit();			this.ResumeLayout(false);		}		#endregion		/// <summary>		/// The main entry point for the application.		/// </summary>		[STAThread]		static void Main() 		{			Application.Run(new Form1());		}		private void btnListLog_Click(object sender, System.EventArgs e)		{			EventLog[] remoteEventLogs; 			// Gets logs on the local computer, gives remote computer name to get the logs on the remote computer.			remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName);			Console.WriteLine("Number of logs on computer: " + remoteEventLogs.Length);			for ( int i=0; i<remoteEventLogs.Length; i++ )				Console.WriteLine("Log: " + remoteEventLogs[i].Log);		}		private void btnReadLog_Click(object sender, System.EventArgs e)		{			//logType can be Application, Security, System or any other Custom Log.			string logType = "Application";						/* In this case the EventLog constructor is passed a string variable for the log name and 			 * second argument mention the computer name that you want to read the logs from,			 * and that you have appropriate permissions to*/			EventLog ev = new EventLog(logType, System.Environment.MachineName);			int LastLogToShow = ev.Entries.Count;			if ( LastLogToShow <= 0 )				Console.WriteLine("No Event Logs in the Log :" + logType);			// Read the last 2 record in the specified log. 			int i;			for ( i = ev.Entries.Count - 1; i>= LastLogToShow - 2; i--)			{				EventLogEntry CurrentEntry = ev.Entries[i];				Console.WriteLine("Event ID : " + CurrentEntry.EventID);				Console.WriteLine("Entry Type : " + CurrentEntry.EntryType.ToString());				Console.WriteLine("Message :  " + CurrentEntry.Message + "\n");			}				ev.Close();			/* Similarly you can loop through all the entries in the log using			 * the entries collection as shown in the following commented code.			 * For Each entry In ev.Entries */    		}		private void btnWriteLog_Click(object sender, System.EventArgs e)		{			/* When writing to an event log, pass the computer name where 			 * the log resides.  Here the MachineName Property of the Environment class 			 * is used to determine the name of the local computer.  Assuming that you have 			 * the appropriate permissions, it is also easy to write to event logs on 			 * other computers.*/			//See if the Source exists. 			if ( ! ( EventLog.SourceExists("MySystemSource", System.Environment.MachineName)))				EventLog.CreateEventSource("MySystemSource", "System", System.Environment.MachineName);        					EventLog ev = 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, 10001);			MessageBox.Show("Warning is written to System Log");			ev.Close();		}		private void btnClearLog_Click(object sender, System.EventArgs e)		{			//Create an EventLog instance, and pass log name and MachineName where the log resides.			EventLog ev = new EventLog("Security", System.Environment.MachineName);			ev.Clear();			ev.Close();		}		private void btnCreateLog_Click(object sender, System.EventArgs e)		{			// Create the source, if it does not already exist.			if (! (EventLog.SourceExists("MyOldSource", System.Environment.MachineName)))				// Creating a new log				EventLog.CreateEventSource("MyOldSource", "MyNewLog", System.Environment.MachineName);			Console.WriteLine("CreatingEventSource");		}		private void btnDeleteLog_Click(object sender, System.EventArgs e)		{			string logName = "MyNewLog";			if ( EventLog.SourceExists("MyOldSource", System.Environment.MachineName))			{				logName = EventLog.LogNameFromSourceName("MyOldSource", System.Environment.MachineName);				EventLog.DeleteEventSource("MyOldSource", System.Environment.MachineName);				EventLog.Delete(logName, System.Environment.MachineName);				Console.WriteLine(logName + " deleted.");			}            		}		private void btnRecNotice_Click(object sender, System.EventArgs e)		{			// Create the source, if it does not already exist.			if (EventLog.SourceExists("MySource", System.Environment.MachineName) == false)			{				EventLog.CreateEventSource("MySource", "Application", System.Environment.MachineName);				Console.WriteLine("CreatingEventSource");			}			eventLog1.Log = "Application";			//Enable EnableRaisingEvents to true			eventLog1.EnableRaisingEvents = true;			EventLog.WriteEntry("MySource", "EntryWritten event is fired", EventLogEntryType.Information);		}		private void eventLog1_EntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e)		{			if (e.Entry.Source  == "MySource")				Console.WriteLine("Entry written by my app. Message: " + e.Entry.Message);		}	}}

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

للتحقق من النتائج اتبع الخطوات التالية:
  1. في Microsoft Visual Studio .NET أو في Microsoft Visual Studio 2005 إنشاء جديد Visual C# .NET أو Visual C# 2005 تطبيق Windows مشروع. افتراضياً، يتم إنشاء Form1.vb.
  2. استبدال الرمز في Form1.vb رمز المسردة في قسم "إدخال رمز اكتمال" في هذه المقالة.
  3. من القائمة تصحيح ، انقر فوق "ابدأ" لتشغيل التطبيق.
  4. تنفيذ إجراءات متعددة في النموذج.
  5. من القائمة عرض، انقر فوق Server Explorer للتحقق من النتائج.
  6. قم بتوسيع ملقمات ثم قم بتوسيع اسم الكمبيوتر الخاص بك.
  7. ضمن اسم الكمبيوتر قم بتوسيع سجلات الأحداث.

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

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

خصائص

رقم الموضوع: 815314 - آخر مراجعة: 11/14/2007 06:26:28 - المراجعة: 2.6

Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# 2005 Express Edition

  • kbmt kbeventservice kbnetwork kbmanaged kbprogramming kbhowtomaster kbeventlog kbhowto KB815314 KbMtar
تعليقات
50&did=1&t=">اط
  • العلامات التجارية
  • © 2016 Microsoft
  • mp;t=">if?DI=4050&did=1&t=">d=1&t=">