天天看點

C#3.0雜談(1):使用EventLog類寫Windows事件日志

本文為原創,如需轉載,請注明作者和出處,謝謝!

            作業系統: Windows XP SP3

            開發工具: Visual Studio 2008

                 語言: C# 3.0 

 .net Framework: 3.5

    在程式中經常需要将指定的資訊(包括異常資訊和正常處理資訊)寫到日志中。在C#3.0中可以使用EventLog類将各種資訊直接寫入Windows日志。EventLog類在System.Diagnostics命名空間中。我們可以在“管理工具” > "事件檢視器“中可以檢視我們寫入的Windows日志,如下圖所示:

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    下面是一個使用EventLog類向應用程式(Application)寫入日志的例子,日志類型使用EventLogEntryType枚舉類型指定。

C#3.0雜談(1):使用EventLog類寫Windows事件日志

EventLog log = new EventLog();

try

{

    log.Source = "我的應用程式";

    log.WriteEntry("處理資訊1", EventLogEntryType.Information);

    log.WriteEntry("處理資訊2", EventLogEntryType.Information);

    throw new System.IO.FileNotFoundException("readme.txt檔案未找到");

}

catch (System.IO.FileNotFoundException exception)

    log.WriteEntry("處理資訊2", EventLogEntryType.Error);

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    在運作上面的代碼後,将會寫入如下圖所示的日志資訊。

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    其中WriteEntry方法的第一個參數指定的資訊通過輕按兩下相應的日志可以檢視,如下圖所示。

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    在預設情況下,EventLog類将日志寫在Application事件裡,通過EventLog的構造方法的參數也可以指定其他的日志,如系統(System)事件,但要注意在向非Application事件寫日志資訊時,需要先使用CreateEventSource方法将事件源添加到目前事件中。下面的例子示範了如何向“系統”事件中添加日志資訊:

C#3.0雜談(1):使用EventLog類寫Windows事件日志

EventLog log = new EventLog("System");

//  首先應判斷日志來源是否存在,一個日志來源隻能同時與一個事件綁定s

if(!EventLog.SourceExists("My Application"))

    EventLog.CreateEventSource("My Application", "System");

    log.Source = "My Application";

    log.WriteEntry(exception.Message, EventLogEntryType.Error);

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    在執行上面的代碼後,向System事件寫入的日志如下圖所示。

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    我們也可以通過EventLog類的添加自己的事件,代碼如下:

C#3.0雜談(1):使用EventLog類寫Windows事件日志

EventLog log = new EventLog("MyEvent");

if(!EventLog.SourceExists("New Application"))

    EventLog.CreateEventSource("New Application", "MyEvent");

    log.Source = "New Applications";

C#3.0雜談(1):使用EventLog類寫Windows事件日志

     上面的代碼添加了一個MyEvent事件,添加後的事件檢視器界面如下圖所示。

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    從上圖可以看出,左側的事件檢視器中多了個MyEvent事件。

    我們還可以使用EventLog類來枚舉指定事件中的日志,如下面的代碼所示:

C#3.0雜談(1):使用EventLog類寫Windows事件日志

if (EventLog.Exists("MyEvent"))

    EventLog log = new EventLog("MyEvent");

    foreach (EventLogEntry entry in log.Entries)

    {

        textBox1.Text += entry.Message + ":";

    }

C#3.0雜談(1):使用EventLog類寫Windows事件日志

    上面的代碼枚舉了剛才建立的MyEvent事件中的所有日志,并輸出了每一個日志的資訊(就是WriteEntry方法的第一個參數指定的資訊)。除此之外,我們還可以使用Delete方法删除指定的事件,使用DeleteEventSource方法删除日志源。

    在寫入Windows事件日志時要注意,如果事件日志檔案已滿,可以在事件屬性對話框(在事件右鍵菜單中選擇“屬性”菜單項會彈出該對話框)中增加日志檔案的大小,或清空目前事件中的日志。事件屬性對話框如下圖所示。

C#3.0雜談(1):使用EventLog類寫Windows事件日志

本文轉自銀河使者部落格園部落格,原文連結http://www.cnblogs.com/nokiaguy/archive/2009/02/26/1398708.html如需轉載請自行聯系原作者

銀河使者

繼續閱讀