HOW TO:將項目寫入事件記錄檔
更新:2007 年 11 月
當您要將項目寫入事件記錄檔時,則將要寫入記錄檔的訊息指定為字串。一筆訊息應該包含所有可以用來解釋問題原因,以及改正問題的方法之所有資訊。
您可使用兩種方式將項目寫入記錄檔,這兩者同樣有效。最直接的方式是用您要寫入的記錄檔來登錄事件來源,然後將元件個體化並將其 Source 屬性設定為該記錄檔,最後再呼叫 WriteEntry。如果使用這種方式,就不需要設定元件執行個體的 Log 屬性,記錄檔會在您連接到已登錄的來源時自動判定。如需登錄來源的詳細資訊,請參閱 HOW TO:加入應用程式做為事件記錄檔項目來源。
處理這個處理序 (Process) 的其他方法就是將 EventLog 元件個體化、設定它的 Source、MachineName 和 Log 屬性,並呼叫 WriteEntry 方法。在此情況下,WriteEntry 方法會判斷來源是否已經存在,若不存在,則會立即進行登錄。
要成功地寫入一筆記錄檔項目,必須符合下列條件:
來源必須用指定的記錄檔完成登錄。
注意事項: 您必須先在 EventLog 元件執行個體上設定 Source 屬性,然後才能將項目寫入記錄檔。當元件寫入項目時,系統會自動檢查您所指定的來源是否會使用元件要寫入的事件記錄檔來完成登錄,如有需要,則會呼叫 CreateEventSource 方法。一般而言,會在安裝應用程式期間建立新的事件來源 (Event Source)。這可讓作業系統有時間重新整理已登錄事件來源的清單及其組態。如果作業系統並未重新整理其事件來源清單,而您嘗試要用新的來源寫入事件,則寫入作業將失敗。如果不可能在安裝時建立來源,則請設法在第一次寫入作業之前建立來源,也許在應用程式初始化期間即可建立。如果選擇採用這種方式,就一定要在電腦上用系統管理員權限,執行初始化程式碼。您必須要有這些權限,才能建立新的事件來源 (Event Source)。
您指定的訊息長度不能超過 16K。
您的應用程式必須對要寫入的記錄檔有寫入權限。如需詳細資訊,請參閱事件記錄檔安全性細節。
在您寫入項目時可以指定許多參數,包括您所製作的項目類型、識別事件的 ID、分類以及任何您想要附加到項目的二進位資料。
若要寫入一筆事件記錄檔項目
產生 EventLog 元件。如需詳細資訊,請參閱 HOW TO:建立 EventLog 元件執行個體。
使用 CreateEventSource 方法,將使用該記錄檔的事件來源登錄到您要寫入項目之處,使用唯一字串做為來源字串。將元件的 Source 屬性設定給您登錄的來源。如需詳細資訊,請參閱 HOW TO:設定 EventLog 元件執行個體。呼叫 WriteEntry 方法,以指定要寫入記錄檔的項目。
If Not EventLog.SourceExists("MyApp1") Then EventLog.CreateEventSource("MyApp1", "Application") End If EventLog1.Source = "MyApp1" EventLog1.WriteEntry("This is a simple event log entry")
if (!System.Diagnostics.EventLog.SourceExists("MyApp1")) System.Diagnostics.EventLog.CreateEventSource( "MyApp1", "Application"); EventLog1.Source = "MyApp"; EventLog1.WriteEntry("This is a simple event log entry");
若要寫入當地語系化的事件記錄檔項目
產生 EventLog 元件。如需詳細資訊,請參閱 HOW TO:建立 EventLog 元件執行個體。
若要寫入當地語系化的事件記錄檔項目,請使用 WriteEvent 方法。在這種情況下,您會利用資源識別項 (Resource Identifier) 而不是利用字串值來指定事件屬性。[事件檢視器] 會使用資源識別項,顯示來源之當地語系化資源檔中的對應字串。您必須先在對應資源檔中登錄來源,然後才能使用資源識別項來寫入事件。如需註冊資源檔的相關資訊,請參閱 EventSourceCreationData 類別。
If Not EventLog.SourceExists("MyApp1") Then EventLog.CreateEventSource("MyApp1", "Application") End If EventLog1.Source = "MyApp1" EventLog1.WriteEvent(New EventInstance(1, 1), New String() {"message"})
if (!System.Diagnostics.EventLog.SourceExists("MyApp1")) System.Diagnostics.EventLog.CreateEventSource( "MyApp1", "Application"); EventLog1.Source = "MyApp"; EventLog1.WriteEvent(new System.Diagnostics.EventInstance(1, 1), new string[] { "message" });