Làm thế nào để quản lý các bản ghi sự kiện sử dụng Visual C#.NET hoặc Visual C# 2005

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:815314
Đối với một Microsoft Visual Basic.NET Phiên bản này viết, xem 814564.
TÓM TẮT
Bài viết từng bước này mô tả cách để truy cập và Tuỳ chỉnh các bản ghi sự kiện Windows bằng cách sử dụng Microsoft.NET Framework. Với các Các hạng bạn có thể tương tác với Windows bản ghi sự kiện. Bằng cách sử dụng các Các hạng bạn có thể đọc từ các bản ghi hiện có, ghi mục để các sự kiện đăng nhập, tạo hoặc xóa sự kiện nguồn, xóa các bản ghi và đáp ứng với đăng nhập mục. Bài viết cũng mô tả làm thế nào để tạo ra các bản ghi mới trong khi tạo ra một sự kiện nguồn.

Yêu cầu

Danh sách sau vạch ra được đề nghị phần cứng, phần mềm, hạ tầng mạng, và gói dịch vụ được yêu cầu:
  • Microsoft.NET Framework
  • Microsoft Visual C#.NET hoặc Microsoft Visual C# 2005.
Bài viết này giả định rằng bạn đã quen thuộc với sau các chủ đề:
  • Microsoft Visual C#.NET hoặc Microsoft Visual C# 2005 Syntax
  • Microsoft Visual Studio.Môi NET hoặc Microsoft Visual Studio 2005 trường
  • Lỗi xử lý trong các.NET Framework

Tìm các bản ghi hiện có trên máy tính


Bạn có thể tìm các bản ghi hiện có trên một máy tính bằng cách sử dụng các phương pháp được chia sẻ GetEventLogs của các Các lớp học. Các GetEventLogs phương pháp tìm kiếm cho tất cả các bản ghi sự kiện trên máy tính địa phương, và tạo ra một mảng của Các các đối tượng chứa trong danh sách. Ví dụ sau lấy một danh sách các bản ghi trên máy tính địa phương, và sau đó hiển thị tên đăng nhập một giao diện điều khiển cửa sổ.
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);

Đọc và viết Nhật ký để Địa phương và hệ thống từ xa

Đọc các bản ghi

Để đọc một sự kiện đăng nhập, hãy sử dụng các Mục thuộc tính của các Các lớp học. Các Các lớp học Mục bất động sản là một tập hợp của tất cả các mục trong trường hợp đăng nhập. Bạn có thể iterate qua bộ sưu tập, và đọc tất cả các mục trong các quy định đăng nhập. Các mã sau đây chứng tỏ làm thế nào để làm điều này:
      //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();

Ghi nhật ký

Để viết một sự kiện đăng nhập, hãy sử dụng các WriteEntry phương pháp của các Các lớp học. Ghi sổ ký sự thành công, ứng dụng của bạn phải có truy cập ghi nhật ký mà nó đang cố gắng để viết thư cho. Để biết thêm thông tin về cấp phép mà bạn phải có để đọc và viết một sự kiện đăng nhập, ghé thăm Web site sau của Microsoft.
Bảo mật Ramification của bản ghi sự kiện
http://msdn2.Microsoft.com/en-US/Library/4xz6w79h (vs.71) .aspx
Bạn phải đặt nguồn bất động sản trên của bạn Các Ví dụ thành phần trước khi bạn có thể viết thư mục cho một đăng nhập. Khi thành phần của bạn viết một mục, hệ thống sẽ tự động xác minh để xem nếu các nguồn đã chỉ định là đăng ký với sổ ghi sự kiện rằng các thành phần là văn bản để, và sau đó cuộc gọi CreateEventSource (nếu CreateEventSource phải được gọi là).
  //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();   

Rõ ràng Các bản ghi

Khi một sự kiện đăng nhập đầy đủ, nó còn chưa dừng ghi âm sự kiện mới thông tin, hoặc bắt đầu ghi đè lên mục trước đó. Nếu sự kiện ghi dừng, bạn có thể bỏ đăng nhập hiện tại mục và cho phép đăng nhập để bắt đầu ghi âm sự kiện một lần nữa. Gọi cho các Rõ ràng phương pháp trên ví dụ thành phần sổ ký sự.

Chú ý Để xóa sổ ký sự mới, bạn phải có người quản trị cấp phép trên máy tính nơi các đăng nhập.
     //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(); 

Tạo và xoá Tuỳ chỉnh các bản ghi

Tạo các đăng nhập tuỳ chỉnh

Bạn có thể sử dụng các CreateEventSource phương pháp để tạo của riêng bạn xử lý sự kiện tùy chỉnh. Trước khi bạn tạo một sự kiện đăng nhập, sử dụng các SourceExists phương pháp để xác minh rằng các nguồn mà bạn đang dùng không đã tồn tại, và sau đó gọi những CreateEventSource. Nếu bạn cố gắng tạo một tệp nhật ký sự kiện đã tồn tại, System.ArgumentException được ném.
     // 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"); 

Xóa đăng nhập tuỳ chỉnh

Để xóa sổ ghi sự kiện, bạn có thể sử dụng các Xóa bỏ phương pháp của các Các lớp học. Nhiều hơn một nguồn có thể viết thư cho một sự kiện đăng nhập. Vì vậy, trước khi bạn xoá một đăng nhập tuỳ chỉnh, hãy chắc chắn rằng không có không có khác nguồn mà đang ghi vào đó đăng nhập.
     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.");}    

Nhận được sự kiện Thông báo

Bạn có thể nhận được sự kiện thông báo khi một mục được viết cho một cụ thể đăng nhập. Để thực hiện việc này, thực hiện các EntryWritten xử lý sự kiện ví dụ của các Các. Ngoài ra, đặt EnableRaisingEvents để sự thật.

Chú ý Bạn chỉ có thể nhận được thông báo sự kiện khi mục được viết trên máy tính địa phương. Bạn không thể nhận được thông báo cho các mục được người viết trên máy tính từ xa.

Mã hoàn chỉnh Bảng liệt kê

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);		}	}}

Xác minh các kết quả

Để xác minh các kết quả, hãy làm theo các bước sau:
  1. Trong Microsoft Visual Studio.NET hoặc Microsoft Visual Studio 2005, tạo ra một mới Visual C# .NET hoặc Visual C# 2005 Windows Application dự án. Theo mặc định, Form1.vb được tạo ra.
  2. Thay thế mã trong Form1.vb với các mã được liệt kê trong phần "Hoàn thành mã liệt kê" của bài viết này.
  3. Trên các Gỡ lỗi trình đơn, nhấp vàoBắt đầu để chạy các ứng dụng.
  4. Thực hiện hành động khác nhau về hình thức.
  5. Trên các Xem trình đơn, nhấp vào Máy chủ Thám hiểm để xác minh các kết quả.
  6. Mở rộng Các máy chủ, và sau đó mở rộngTên máy tính của bạn.
  7. Dưới tên máy tính, mở rộng Sự kiện Các bản ghi.

    Chú ý Các Các máy chủ nút máy chủ Explorer là không có sẵn trong các học thuật Edition of Visual C#.NET. Trong trường hợp này, bạn có thể sử dụng Xem sự kiện Windows để xem các kết quả của ứng dụng của bạn.
  8. Kiểm tra Server Explorer để kiểm chứng rằng tất cả các tác vụ thực hiện một cách chính xác.
THAM KHẢO
Để biết thêm chi tiết, hãy truy cập trang Web Microsoft sau đây Trang web:

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 815314 - Xem lại Lần cuối: 08/28/2011 11:15:00 - Bản sửa đổi: 2.0

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

  • kbeventservice kbnetwork kbmanaged kbprogramming kbhowtomaster kbeventlog kbhowto kbmt KB815314 KbMtvi
Phản hồi