Compartilhar via


Logs de Eventos e componentes multissegmentados

Os logs de eventos são mantendo rastro de eventos significativos enquanto um aplicativo está sendo executado.Usando logs de eventos, você pode informações de registro que pode ser útil para solucionar ou análise de desempenho.Há algumas considerações adicionais ao registrar eventos com componentes multissegmentados.Primeiro, deve haver um mecanismo para registrar a identidade da thread que efetua logon a mensagem.Segundo, a segurança de segmentos deve ser levada em consideração ao interagir com o log de eventos.O encadeamento que tenta escrever uma mensagem deve obter um bloqueio exclusivo na ordem de logon evitar as condições de corrida.Para obter uma visão geral dos logs de eventos, consulte administrando Logs de Eventos.Para obter mais informações sobre segurança de segmento, consulte Componentes thread-safe.

Para identificar cada segmento, você deve definir propriedade de Thread.Name.Essa propriedade tem e retorna um valor de String , e pode ser usada para definir um identificador exclusivo para cada segmento.Esse valor pode então ser passado para método de EventLog.CreateEventSource para designar seu segmento como uma fonte de evento para cada segmento.A o registrar eventos, seu segmento pode definir a propriedade de Source de log de eventos ao nome de essa maneira, assegurando o log exato de eventos.

A o executar várias linhas de código em um ambiente de vários segmentos, é importante que os segmentos obtêm bloqueios exclusivos no log de eventos antes de executar qualquer código.Por exemplo, considere as seguintes linhas de código, executadas em um ambiente de vários segmentos:

MyEventLog.Source = Threading.Thread.CurrentThread.Name.ToString
EventLog.WriteEntry("What thread did this come from?", "myApplication")
MyEventLog.Source = System.Threading.Thread.CurrentThread.Name.ToString();
EventLog.WriteEntry("What thread did this come from?", "myApplication");

Se vários segmentos estão executando essas linhas simultaneamente, se é possível que um segmento modifique propriedade de EventLog.Source log de eventos, e para que outro segmento gravar uma mensagem, depois que a propriedade tenha sido alterada.Para evitar condições como estes, você pode usar a instrução de Instrução SyncLock (Visual Basic) ou de lock (C#) para obter um bloqueio exclusivo no objeto antes de executar o código de vários threads.Usando o bloqueio, o exemplo anterior teria agora como o seguinte:

SyncLock MyEventLog
   MyEventLog.Source = System.Threading.Thread.CurrentThread.Name.ToString
   EventLog.WriteEntry("What thread did this come from?", "myApplication")
End SyncLock
lock(MyEventLog)
{
   MyEventLog.Source = Threading.Thread.CurrentThread.Name.ToString();
   EventLog.WriteEntry("What thread did this come from?", 
      "myApplication");
}

Você também pode usar as classes de Debug e de Trace para registrar eventos que ocorrem em aplicativos multissegmentados.Essas classes são classes estáticos que permitem que você envie saída para a janela de saída, a janela do console, um arquivo de texto ou no log de eventos, ou as qualquer outro de um número de objetos.Para obter detalhes, consulte Rastreando e provendo aplicativos no Visual Basic e visual C#.

Consulte também

Tarefas

Como: Eventos de log para componentes multissegmentados

Outros recursos

Multithreading em componentes