使用EventLog類寫Windows事件記錄

來源:互聯網
上載者:User

標籤:

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

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

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

    在運行上面的代碼後,將會寫入如所示的日誌資訊。

    其中WriteEntry方法的第一個參數指定的資訊通過雙擊相應的日誌可以查看,如所示。

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

EventLog log = new EventLog("System"); //  首先應判斷日誌來源是否存在,一個日誌來源只能同時與一個事件綁定s if(!EventLog.SourceExists("My Application"))     EventLog.CreateEventSource("My Application", "System"); try {     log.Source = "My Application";     log.WriteEntry("處理資訊1", EventLogEntryType.Information);     log.WriteEntry("處理資訊2", EventLogEntryType.Information);     throw new System.IO.FileNotFoundException("readme.txt檔案未找到"); } catch (System.IO.FileNotFoundException exception) {     log.WriteEntry(exception.Message, EventLogEntryType.Error); }

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

 

 

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

EventLog log = new EventLog("MyEvent"); //  首先應判斷日誌來源是否存在,一個日誌來源只能同時與一個事件綁定s if(!EventLog.SourceExists("New Application"))     EventLog.CreateEventSource("New Application", "MyEvent"); try {     log.Source = "New Applications";     log.WriteEntry("處理資訊1", EventLogEntryType.Information);     log.WriteEntry("處理資訊2", EventLogEntryType.Information);     throw new System.IO.FileNotFoundException("readme.txt檔案未找到"); } catch (System.IO.FileNotFoundException exception) {     log.WriteEntry(exception.Message, EventLogEntryType.Error); }

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

    從可以看出,左側的事件檢視器中多了個MyEvent事件。     我們還可以使用EventLog類來枚舉指定事件中的日誌,如下面的代碼所示:

 

if (EventLog.Exists("MyEvent")) {     EventLog log = new EventLog("MyEvent");     foreach (EventLogEntry entry in log.Entries)     {         textBox1.Text += entry.Message + ":";     } }

    上面的代碼枚舉了剛才建立的MyEvent事件中的所有日誌,並輸出了每一個日誌的資訊(就是WriteEntry方法的第一個參數指定的資訊)。除此之外,我們還可以使用Delete方法刪除指定的事件,使用DeleteEventSource方法刪除日誌源。     在寫入Windows事件記錄時要注意,如果事件記錄檔案已滿,可以在事件屬性對話方塊(在事件右鍵菜單中選擇“屬性”功能表項目會彈出該對話方塊)中增加記錄檔的大小,或清空當前事件中的日誌。事件屬性對話方塊如所示。

使用EventLog類寫Windows事件記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.