Partilhar via


Como: Registrar informações sobre serviços

Nota

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 padrão, todos os projetos de Serviço do Windows têm a capacidade de interagir com o log de eventos do Aplicativo e gravar informações e exceções nele. Use a AutoLog propriedade para indicar se deseja essa funcionalidade em seu aplicativo. Por padrão, o registro em log é ativado para qualquer serviço criado com o modelo de projeto Serviço do Windows. Você pode usar uma forma estática da classe para gravar informações de EventLog serviço em um log sem ter que criar uma instância de um EventLog componente ou registrar manualmente uma fonte.

O instalador do seu serviço registra automaticamente cada serviço em seu projeto como uma fonte válida de eventos com o log do aplicativo no computador onde o serviço está instalado, quando o log está ativado. O serviço registra informações sempre que o serviço é iniciado, interrompido, pausado, retomado, instalado ou desinstalado. Ele também registra todas as falhas que ocorrem. Você não precisa escrever nenhum código para gravar entradas no log ao usar o comportamento padrão; O serviço lida com isso automaticamente.

Se quiser gravar em um log de eventos diferente do log do aplicativo, você deve definir a AutoLog propriedade como false, criar seu próprio log de eventos personalizado dentro do código de serviços e registrar o serviço como uma fonte válida de entradas para esse log. Em seguida, você deve escrever código para registrar entradas no log sempre que ocorrer uma ação em que esteja interessado.

Nota

Se você usar um log de eventos personalizado e configurar seu aplicativo de serviço para gravar nele, não deverá tentar acessar o log de eventos antes de definir a propriedade do ServiceName serviço em seu código. O log de eventos precisa do valor dessa propriedade para registrar seu serviço como uma fonte válida de eventos.

Para habilitar o log de eventos padrão para seu serviço

  • Defina a AutoLog propriedade do componente como true.

    Nota

    Por padrão, essa propriedade é definida como true. Você não precisa definir isso explicitamente, a menos que esteja criando um processamento mais complexo, como avaliar uma condição e, em seguida, 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 componente como false.

    AutoLog = false;
    
    Me.AutoLog = False
    

Para configurar o registro em log em um log personalizado

  1. Defina a propriedade AutoLog como false.

    Nota

    Você deve definir AutoLog como false para usar um log personalizado.

  2. Configure uma instância de um EventLog componente em seu aplicativo de serviço do Windows.

  3. Crie um log personalizado chamando o CreateEventSource método e especificando a cadeia de caracteres de origem e o nome do arquivo de log que você deseja criar.

  4. Defina a Source propriedade na instância do EventLog componente para a cadeia de caracteres de origem que você criou na etapa 3.

  5. Escreva suas entradas acessando o WriteEntry método na instância do EventLog componente.

    O código a seguir mostra como configurar o log para um log personalizado.

    Nota

    Neste exemplo de código, uma instância de um EventLog componente é nomeada eventLog1 (EventLog1 no Visual Basic). Se você criou uma instância com outro nome na etapa 2, altere o código de acordo.

    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