Como: Registrar em log informações sobre serviços
Observação
Este artigo não se aplica aos serviços hospedados no .NET. Para obter o conteúdo mais recente sobre os Serviços Windows usando Microsoft.Extensions.Hosting.BackgroundService e o modelo de Serviço de Trabalho, confira:
Por padrão, todos os projetos de Serviço Windows têm a capacidade de interagir com o log de eventos do aplicativo e gravar informações e exceções. A propriedade AutoLog é usada para indicar se você deseja essa funcionalidade em seu aplicativo. Por padrão, o registro em log é habilitado para qualquer serviço criado com o modelo de projeto de Serviço Windows. Você pode usar uma forma estática da classe EventLog para gravar informações de serviço em um log sem precisar criar uma instância de um componente EventLog nem registrar uma fonte manualmente.
O instalador do serviço registra automaticamente cada serviço no projeto como uma fonte de eventos válida no log do aplicativo no computador no qual o serviço está instalado, quando o registro em log está habilitado. O serviço registra informações sempre que é iniciado, interrompido, colocado em pausa, retomado, instalado ou desinstalado. Ele também registra 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 faz isso automaticamente.
Se você quiser gravar em um log de eventos que não seja o log do aplicativo, será necessário definir a propriedade AutoLog como false
, criar seu próprio log de eventos personalizado no código de serviços e registrar o serviço como uma fonte válida de entradas para esse log. Em seguida, você precisará escrever o código para registrar entradas no log sempre que ocorrer uma ação do seu interesse.
Observação
Se você usar um log de eventos personalizado e configurar o aplicativo de serviço para gravar nele, não tente acessar o log de eventos antes de configurar a propriedade ServiceName do serviço no código. O log de eventos precisa do valor dessa propriedade para registrar o serviço como uma origem válida de eventos.
Para habilitar o registro em log de eventos padrão para o serviço
Defina a propriedade AutoLog do componente para
true
.Observação
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 propriedade AutoLog com base no resultado dessa condição.
Para desabilitar o registro em log de eventos para o serviço
Defina a propriedade AutoLog do componente para
false
.AutoLog = false;
Me.AutoLog = False
Para configurar o registro em um log personalizado
Defina a propriedade AutoLog como
false
.Observação
Você precisa definir AutoLog como false para usar um log personalizado.
Configure uma instância de um componente EventLog no aplicativo de Serviço Windows.
Crie um log personalizado chamando o método CreateEventSource e especificando a cadeia de caracteres de origem e o nome do arquivo de log que você deseja criar.
Defina a propriedade Source na instância do componente EventLog para a cadeia de caracteres de origem que você criou na etapa 3.
Grave as entradas, acessando o método WriteEntry na instância do componente EventLog.
O código a seguir mostra como configurar o registro em um log personalizado.
Observação
Neste exemplo de código, uma instância de um componente EventLog é chamada de
eventLog1
(EventLog1
em Visual Basic). Se você criar uma instância com outro nome na etapa 2, altere o código adequadamente.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