HOW TO:記錄關於服務的資訊
更新:2007 年 11 月
根據預設,所有的 Windows 服務專案都可以和應用程式事件記錄檔互動,也可以寫入資訊和例外狀況。您可以使用 AutoLog 屬性指出是否要在應用程式中使用此功能。根據預設,以 Windows 服務專案範本建立的任何服務的記錄功能都處於開啟狀態。您可以使用 EventLog 類別的靜態表單,將服務資訊寫入記錄檔中,而不需建立 EventLog 元件執行個體 或手動登錄來源。
當開啟記錄功能時,服務的安裝程式會自動登錄專案中的每一個服務,做為安裝服務的電腦的應用程式記錄檔之有效事件的來源。服務會記錄每次啟動、停止、暫停、繼續、安裝和解除安裝服務的資訊,也會記錄所發生的任何錯誤。使用預設行為時,您不需撰寫任何程式碼即可將項目寫入記錄檔中;服務會自動為您處理。
如果您想要寫入應用程式記錄檔以外的其他事件記錄檔,您必須將 AutoLog 屬性設定為 false,在服務程式碼中建立自己的自訂事件記錄檔,並將服務登錄為該記錄檔的有效項目來源。如需詳細資訊,請參閱 HOW TO:建立及移除自訂事件記錄檔。接著您必須撰寫程式碼,在您有興趣的動作發生時將項目記錄至記錄檔中。
注意事項: |
---|
如果您使用自訂事件記錄檔,並設定服務應用程式寫入此自訂記錄檔,在程式碼設定服務的 ServiceName 屬性之前,請不要嘗試存取該事件記錄檔。此事件記錄檔需要此屬性值,才能將您的服務登錄為有效的事件的來源。 |
若要啟用服務的預設事件記錄功能
將元件的 AutoLog 屬性設定為 true。
注意事項: 根據預設,這個屬性是設定為 true。您不需要明確地設定這個屬性值,除非您要建置更複雜的處理,例如評估某個狀況,再依照該狀況的結果設定 AutoLog 屬性。
若要停用服務的事件記錄功能
將元件的 AutoLog 屬性設定為 false。
Me.AutoLog = False
this.AutoLog = false;
this.set_AutoLog(false);
若要將記錄功能設定為使用自訂記錄檔
將 AutoLog 屬性設定為 false。
注意事項: 您必須將 AutoLog 設定為 false,才能使用自訂記錄檔。
在您的 Windows 服務應用程式中建立 EventLog 元件的執行個體。如需詳細資訊,請參閱 HOW TO:建立 EventLog 元件執行個體。
藉由呼叫 CreateEventSource 方法並指定來源字串及希望建立的記錄檔名稱,以建立自訂記錄檔。
藉由存取 EventLog 元件執行個體中的 WriteEntry 方法寫入項目。
下列程式碼顯示如何將記錄功能設定為使用自訂記錄檔。
Public Sub New() ' Turn off autologging Me.AutoLog = False ' Create a new event source and specify a log name that ' does not exist to create a custom log If Not System.Diagnostics.EventLog.SourceExists("MySource") Then System.Diagnostics.EventLog.CreateEventSource("MySource", _ "MyLog") End If ' Configure the event log instance to use this source name EventLog1.Source = "MySource" End Sub ... Protected Overrides Sub OnStart(ByVal args() As String) ' Write an entry to the log you've created. EventLog1.WriteEntry("In Onstart.") End Sub
public UserService2() { // Turn off autologging this.AutoLog = false; // create an event source, specifying the name of a log that // does not currently exist to create a new, custom log if (!System.Diagnostics.EventLog.SourceExists("MySource")) { System.Diagnostics.EventLog.CreateEventSource( "MySource","MyLog"); } // configure the event log instance to use this source name eventLog1.Source = "MySource"; } ... protected override void OnStart(string[] args) { // write an entry to the log eventLog1.WriteEntry("In OnStart."); }
public UserService2() { // Turn off autologging this.set_AutoLog(false); // create an event source, specifying the name of a log that // does not currently exist to create a new, custom log if (!(System.Diagnostics.EventLog.SourceExists("MySource")) ) { System.Diagnostics.EventLog.CreateEventSource("MySource", "MyLog"); } // configure the event log instance to use this source name eventLog1.set_Source("MySource"); } ... protected void OnStart(System.String[] args) { // write an entry to the log eventLog1.WriteEntry("In OnStart."); }