共用方式為


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

若要將記錄功能設定為使用自訂記錄檔

  1. AutoLog 屬性設定為 false。

    注意事項:

    您必須將 AutoLog 設定為 false,才能使用自訂記錄檔。

  2. 在您的 Windows 服務應用程式中建立 EventLog 元件的執行個體。如需詳細資訊,請參閱 HOW TO:建立 EventLog 元件執行個體

  3. 藉由呼叫 CreateEventSource 方法並指定來源字串及希望建立的記錄檔名稱,以建立自訂記錄檔。

  4. EventLog 元件執行個體中的 Source 屬性設定為步驟 3 中所建立的來源字串。

  5. 藉由存取 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.");
        }
    

請參閱

工作

HOW TO:建立及移除自訂事件記錄檔

HOW TO:建立 EventLog 元件執行個體

概念

Windows 服務應用程式簡介