Condividi tramite


Procedura: Registrare informazioni sui servizi

Annotazioni

Questo articolo non si applica ai servizi ospitati in .NET. Per il contenuto più recente nei servizi Windows che usano Microsoft.Extensions.Hosting.BackgroundService e il modello di servizio di lavoro, vedere:

Per impostazione predefinita, tutti i progetti di servizio Windows possono interagire con il registro eventi dell'applicazione e scrivere informazioni ed eccezioni. Usare la AutoLog proprietà per indicare se si vuole usare questa funzionalità nell'applicazione. Per impostazione predefinita, la registrazione è attivata per qualsiasi servizio creato con il modello di progetto del servizio Windows. È possibile usare un formato statico della EventLog classe per scrivere informazioni sul servizio in un log senza dover creare un'istanza di un EventLog componente o registrare manualmente un'origine.

Il programma di installazione per il servizio registra automaticamente ogni servizio nel progetto come origine valida di eventi con il registro applicazioni nel computer in cui è installato il servizio, quando la registrazione è attivata. Il servizio registra le informazioni ogni volta che il servizio viene avviato, arrestato, sospeso, ripreso, installato o disinstallato. Registra anche eventuali errori che si verificano. Non è necessario scrivere codice per scrivere voci nel log quando si usa il comportamento predefinito; il servizio gestisce automaticamente questa operazione.

Se si vuole scrivere in un registro eventi diverso dal registro applicazioni, è necessario impostare la AutoLog proprietà su false, creare un registro eventi personalizzato all'interno del codice dei servizi e registrare il servizio come origine valida delle voci per tale log. È quindi necessario scrivere codice per registrare le entrate nel registro ogni volta che si verifica un'azione d'interesse.

Annotazioni

Se si usa un registro eventi personalizzato e si configura l'applicazione di servizio per la scrittura, non è necessario tentare di accedere al registro eventi prima di impostare la proprietà del ServiceName servizio nel codice. Il registro eventi richiede il valore di questa proprietà per registrare il servizio come origine valida degli eventi.

Per abilitare la registrazione degli eventi predefinita per il servizio

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

    Annotazioni

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

Per disabilitare la registrazione degli eventi per il servizio

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

    AutoLog = false;
    
    Me.AutoLog = False
    

Per configurare la registrazione in un log personalizzato

  1. Impostare la proprietà AutoLog su false.

    Annotazioni

    È necessario impostare AutoLog su false per usare un log personalizzato.

  2. Configurare un'istanza di un componente EventLog nell'applicazione per il servizio Windows.

  3. Creare un log personalizzato chiamando il CreateEventSource metodo e specificando la stringa di origine e il nome del file di log che si vuole creare.

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

  5. Scrivere le voci accedendo al metodo nell'istanza WriteEntry del EventLog componente.

    Il codice seguente illustra come configurare la registrazione in un log personalizzato.

    Annotazioni

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

    public UserService2()
    {
        eventLog1 = new EventLog();
        // Turn off autologging
    
        AutoLog = false;
        // create an event source, specifying the name of a log that
        // does not currently exist to create a new, custom log
        if (!EventLog.SourceExists("MySource"))
        {
            EventLog.CreateEventSource(
                "MySource", "MyLog");
        }
        // configure the event log instance to use this source name
        eventLog1.Source = "MySource";
        eventLog1.Log = "MyLog";
    }
    
    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 override void OnStart(string[] args)
    {
        // write an entry to the log
        eventLog1.WriteEntry("In OnStart.");
    }
    
    Protected Overrides Sub OnStart(ByVal args() As String)
        ' Write an entry to the log you've created.
        EventLog1.WriteEntry("In Onstart.")
    End Sub
    

Vedere anche