Condividi tramite


Procedura: registrare informazioni sui servizi

Aggiornamento: novembre 2007

In base all'impostazione predefinita, tutti i progetti di servizi Windows offrono la possibilità di interagire con il log degli eventi dell'applicazione e di scrivere informazioni ed eccezioni. Per indicare se si desidera questa funzionalità nell'applicazione, utilizzare la proprietà AutoLog. In base all'impostazione predefinita, la registrazione è attivata per ogni servizio creato con il modello di progetto dei servizi Windows. È possibile utilizzare un form statico della classe EventLog per scrivere le informazioni sul servizio in un log senza che sia necessario creare un'istanza di un componente EventLog o registrare un'origine manualmente.

Quando si attiva la registrazione, il programma di installazione per il servizio registra automaticamente ogni servizio del progetto come origine valida di eventi con il log di applicazione sul computer dove è installato il servizio. Il servizio registra le informazioni ogni volta che viene avviato, interrotto, sospeso, ripreso, installato o disinstallato. Registra anche gli eventuali errori. Quando si utilizza il comportamento predefinito, non è necessario creare codice per scrivere le voci nel log, perché il servizio gestisce questa operazione automaticamente.

Se si desidera scrivere in un log eventi diverso da quello dell'applicazione, è necessario impostare la proprietà AutoLog su false, creare il log eventi personalizzato nel codice del servizio e registrare il servizio come origine valida per le voci di tale log. Per ulteriori informazioni, vedere Procedura: creare e rimuovere log eventi personalizzati. È quindi necessario compilare il codice per registrare le voci nel log ogni volta che si verifica un'operazione rilevante.

Nota:

Se si utilizza un log eventi personalizzato e si configura l'applicazione di servizio in modo che lo utilizzi, non tentare di accedere al log eventi prima di impostare la proprietà ServiceName del servizio nel codice. Il valore di questa proprietà è necessario per registrare il servizio nel log eventi come origine valida di eventi.

Per attivare la registrazione predefinita degli eventi per il servizio

  • Impostare la proprietà AutoLog per il componente su true.

    Nota:

    Per impostazione predefinita, questa proprietà è impostata su true. Non è necessario impostare tale proprietà in modo esplicito a meno che non sia in corso un'elaborazione più complessa, ad esempio la valutazione di una condizione e l'impostazione della proprietà AutoLog in base al risultato di tale condizione.

Per disattivare la registrazione degli eventi per il servizio

  • Impostare la proprietà AutoLog per il componente su false.

    Me.AutoLog = False
    
         this.AutoLog = false;
    
            this.set_AutoLog(false);
    

Per impostare la registrazione in un log personalizzato

  1. Impostare la proprietà AutoLog su false.

    Nota:

    Per utilizzare un log personalizzato, è necessario impostare AutoLog su false.

  2. Impostare un'istanza di un componente EventLog nell'applicazione di servizio di Windows. Per ulteriori informazioni, vedere Procedura: creare istanze del componente EventLog.

  3. Creare un log personalizzato mediante una chiamata al metodo CreateEventSource e specificando la stringa di origine e il nome del file di log da creare.

  4. Impostare la proprietà Source dell'istanza del componente EventLog sulla stringa di origine creata nel passaggio 3.

  5. Accedere al metodo WriteEntry dell'istanza del componente EventLog per scrivere le voci.

    Nel codice riportato di seguito viene illustrato come impostare la registrazione in un log personalizzato.

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

Vedere anche

Attività

Procedura: creare e rimuovere log eventi personalizzati

Procedura: creare istanze del componente EventLog

Concetti

Introduzione alle applicazioni di servizio Windows