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

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 815314 - Xem s?n ph?m mà bài này áp d?ng vào.
Đ?i v?i m?t Microsoft Visual Basic.NET Phiên b?n này vi?t, xem 814564.
Bung t?t c? | Thu g?n t?t c?

? Trang này

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ác l?p h?c
http://msdn2.Microsoft.com/en-US/Library/System.Diagnostics.EventLog (vs.71) .aspx

Thu?c tính

ID c?a bài: 815314 - L?n xem xét sau cùng: 28 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
T? khóa: 
kbeventservice kbnetwork kbmanaged kbprogramming kbhowtomaster kbeventlog kbhowto kbmt KB815314 KbMtvi
Máy d?ch
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

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com