Condividi tramite


Procedura: registrare informazioni sui servizi

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 registro applicazioni 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 dal registro applicazioni, è 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. È 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 fase di compilazione 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 disabilitare la registrazione degli eventi per il servizio

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

    Me.AutoLog = False
    
            this.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.

  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.

    Nota

    In questo esempio di codice un'istanza di un componente EventLog viene denominata eventLog1 (EventLog1 in Visual Basic). Se nel passaggio 2 è stata creata un'istanza con un altro nome, modificare il codice di conseguenza.

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

Vedere anche

Concetti

Introduzione alle applicazioni di servizio Windows