Como: Registar Informações sobre Serviços

Observação

Este artigo não se aplica a serviços hospedados no .NET. Para obter o conteúdo mais recente sobre os serviços do Windows que usam Microsoft.Extensions.Hosting.BackgroundService e o modelo Serviço de Trabalho, consulte:

Por defeito, todos os projetos do Windows Service têm a capacidade de interagir com o registo de eventos da Aplicação e escrever informações e exceções. Usas a AutoLog propriedade para indicar se queres esta funcionalidade na tua aplicação. Por defeito, o login está ativado para qualquer serviço que crie com o modelo do projeto Windows Service. Pode usar uma forma estática da EventLog classe para escrever informação de serviço num log sem ter de criar uma instância de um EventLog componente ou registar manualmente uma fonte.

O instalador do seu serviço regista automaticamente cada serviço do seu projeto como fonte válida de eventos com o registo de aplicações no computador onde o serviço está instalado, quando o registo está ativado. O serviço regista a informação cada vez que o serviço é iniciado, interrompido, pausado, retomado, instalado ou desinstalado. Também regista quaisquer falhas que ocorram. Não é necessário escrever código para escrever entradas no log ao usar o comportamento padrão; O serviço trata disto automaticamente por si.

Se quiser escrever num registo de eventos diferente do registo de aplicação, deve definir a AutoLog propriedade para false, criar o seu próprio registo de eventos personalizado dentro do seu código de serviços e registar o seu serviço como fonte válida de entradas para esse registo. Deve então escrever código para registar entradas no registo sempre que ocorra uma ação do seu interesse.

Observação

Se usar um registro de eventos personalizado e configurar a sua aplicação de serviço para escrever nele, não deve tentar aceder ao registro de eventos antes de definir a propriedade ServiceName do serviço no seu código. O registo de eventos precisa do valor desta propriedade para registar o seu serviço como fonte válida de eventos.

Para ativar o registo de eventos por padrão no seu serviço

  • Defina a AutoLog propriedade do seu componente para true.

    Observação

    Por padrão, essa propriedade é definida como true. Não precisa de definir isto explicitamente, a menos que esteja a construir um processamento mais complexo, como avaliar uma condição e depois definir a AutoLog propriedade com base no resultado dessa condição.

Para desativar o registo de eventos para o seu serviço

  • Defina a AutoLog propriedade do seu componente para false.

    AutoLog = false;
    
    Me.AutoLog = False
    

Para configurar o registo num registo personalizado

  1. Defina a propriedade AutoLog como false.

    Observação

    Deve-se definir AutoLog para false para poder usar um registo personalizado.

  2. Configurar uma instância de um componente EventLog na sua aplicação Windows Service.

  3. Crie um log personalizado chamando o CreateEventSource método e especificando a string de origem e o nome do ficheiro de log que pretende criar.

  4. Defina a propriedade Source na instância de componente EventLog para a string de origem que criou no passo 3.

  5. Escreva as suas entradas acedendo ao WriteEntry método na EventLog instância do componente.

    O código seguinte mostra como configurar o login num registo personalizado.

    Observação

    Neste exemplo de código, uma instância de um EventLog componente é nomeada eventLog1 (EventLog1 no Visual Basic). Se criaste uma instância com outro nome no passo 2, altera o código em conformidade.

    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
    

Consulte também