イベントログの監視

C#でイベントログの書き込みを監視します。

環境:Vista, .NET Framework 3.5, Visual Studio 2008

監視するログの名前を指定し、監視を有効にします。

今回は textbox に書き込まれたイベントの内容を表示しますので、イベントの結果で呼ばれるメゾットが同じスレッドで呼び出されるように設定を行います。

System.Diagnostics.EventLog EvtLog = new System.Diagnostics.EventLog();

EvtLog.Log = "Application";
EvtLog.SynchronizingObject = this;
EvtLog.EntryWritten += new System.Diagnostics.EntryWrittenEventHandler(EventLog_EntryWritten);

EvtLog.EnableRaisingEvents = true;

 

イベントが書き込まれたときに呼ばれるメゾットで、textbox にイベントの内容を追加します。

textBox1.Text += "Source: " + e.Entry.Source + "rn";
textBox1.Text += "Entry : " + e.Entry.Message + "rn";

 

最後に、リソースを解放しイベントの監視を終了します。

EvtLog.Dispose();

 

サンプルコード

using System;
using System.Windows.Forms;

namespace Test
{
	public partial class Form1 : Form
	{
		System.Diagnostics.EventLog EvtLog;

		public Form1()
		{
			InitializeComponent();
		}

		private void button1_Click(object sender, EventArgs e)
		{
			EvtLog = new System.Diagnostics.EventLog();

			EvtLog.Log = "Application"
			EvtLog.SynchronizingObject = this;
			EvtLog.EntryWritten += new System.Diagnostics.EntryWrittenEventHandler(EventLog_EntryWritten);
			EvtLog.EnableRaisingEvents = true;
		}

		private void button2_Click(object sender, EventArgs e)
		{
			EvtLog.Dispose();
		}

		private void EventLog_EntryWritten( object sender, System.Diagnostics.EntryWrittenEventArgs e)
		{
			textBox1.Text += "Source: " + e.Entry.Source + "rn";
			textBox1.Text += "Entry : " + e.Entry.Message + "rn";
		}
	}
}

Comments are closed.

Post Navigation