Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os participantes de rastreamento são os pontos de extensibilidade que permitem que um desenvolvedor de fluxo de trabalho acessar objetos de TrackingRecord e processe os. O .NET Framework 4.6.1 inclui um participante de acompanhamento padrão que grava registros de rastreamento como eventos ETW (Rastreamento de Eventos para Windows). Se isso não atender aos requisitos, você também poderá escrever um participante de rastreamento personalizado.
Acompanhamento de participantes
A infraestrutura de rastreamento permite que o aplicativo de um filtro os registros de saída de rastreamento para que um participante pode assinar um subconjunto de registros. O mecanismo para aplicar um filtro é por meio de um perfil de acompanhamento.
O Windows WF (Workflow Foundation) no .NET Framework 4.6.1 fornece um participante de rastreamento que grava os registros de rastreamento em uma sessão de ETW. O participante é configurado em um serviço de fluxo de trabalho adicionando um comportamento específico de rastreamento em um arquivo de configuração. Habilitar um participante de rastreamentação ETW permite que os registros de rastreamento sejam exibidos no Visualizador de Eventos. O exemplo SDK para o rastreamento ETW- base é uma boa maneira para obter o familiarizado com rastreamento de WF usando o participante controlando ETW- base.
Participante de rastreamento de ETW
O .NET Framework 4.6.1 inclui um participante de rastreamento de ETW que grava os registros de rastreamento a uma sessão de ETW. Isso é feito de maneira muito eficiente, com impacto mínimo no desempenho do aplicativo ou na taxa de transferência do servidor. Uma vantagem de usar o participante de rastreamento padrão do ETW é que os registros de rastreamento recebidos podem ser exibidos juntamente com outros logs de aplicativos e do sistema no Visualizador de Eventos do Windows.
O participante de rastreamento do padrão ETW é configurado no arquivo web.config conforme mostrado no exemplo o seguir.
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="Sample Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
<tracking>
<profiles>
<trackingProfile name="Sample Tracking Profile">
….
</trackingProfile>
</profiles>
</tracking>
</system.serviceModel>
</configuration>
Observação
Se um trackingProfile nome não for especificado, como apenas <etwTracking/> ou <etwTracking profileName=""/>, o perfil de acompanhamento padrão instalado com o .NET Framework 4.6.1 no arquivo Machine.config será usado.
No arquivo Machine.config, o perfil padrão de rastreamento assina os registros e a falhas de instância de fluxo de trabalho.
No sistema ETW, os eventos são gravados na sessão ETW por meio de uma ID do provedor. O provedor que o ID que o participante de rastreamento de ETW usa gravar o rastreamento registra a ETW é definido na seção de diagnóstico do arquivo web.config (em <system.serviceModel><diagnostics>). Por padrão, o participante de acompanhamento do ETW usa uma ID de provedor padrão quando uma não foi especificada, conforme mostrado no exemplo a seguir.
<system.serviceModel>
<diagnostics etwProviderId="52A3165D-4AD9-405C-B1E8-7D9A257EAC9F" />
A ilustração a seguir mostra o fluxo de dados de rastreamento através de participante de rastreamento de ETW. Depois que os dados de acompanhamento atingirem a sessão ETW, eles poderão ser acessados de várias maneiras. Uma das maneiras mais úteis de acessar esses eventos é por meio do Visualizador de Eventos, uma ferramenta comum do Windows usada para exibir logs e rastreamentos de aplicativos e serviços.
![]()
Dados do evento de participante de rastreamento
Um participante de rastreamento serializa os dados de eventos rastreados para uma sessão ETW no formato de um evento por registro de rastreamento. Um evento é identificado usando uma ID dentro do intervalo de 100 a 199. Para obter definições dos registros de eventos de acompanhamento emitidos por um participante de rastreamento, consulte o tópico Referência de Eventos de Acompanhamento .
O tamanho de um evento ETW é limitado pelo tamanho do buffer ETW ou pela carga máxima de um evento ETW, o que for menor. Se o tamanho do evento exceder qualquer um desses limites de ETW, o evento será truncado e seu conteúdo será removido de maneira arbitrária. Variáveis, argumentos, anotações e dados personalizados não são removidos seletivamente. No caso de truncamento, todos estes é truncada independentemente do valor que fez com que o tamanho do evento excede o limite de ETW. Os dados removidos são substituídos por <item>..<item>.
Tipos complexos em variáveis, argumentos e itens de dados personalizados são serializados para o registro de evento ETW usando a NetDataContractSerializer classe. Essa classe inclui informações de CLR- tipo no vapor serializado XML.
Truncamento de dados de carregamento útil devido aos limites de ETW pode resultar em duplicado através dos registros que estão sendo enviados a uma sessão de ETW. Isso pode ocorrer se mais de uma sessão estiver escutando os eventos e as sessões tiverem limites de conteúdo diferentes para os eventos.
Para a sessão com o limite inferior o evento pode ser truncado. O participante de rastreamento de ETW não tem conhecimento do número de sessões que escutam por eventos; se um evento é truncado para uma sessão no participante de ETW tentar de volta para o evento uma vez. Nesse caso a sessão que está configurada para aceitar um tamanho maior de carregamento útil obterá o evento duas vezes (o evento não truncado e truncado). A duplicação pode ser evitada configurando todas as sessões ETW com os mesmos limites de tamanho de buffer.
Acessando dados de acompanhamento de um participante do ETW no Visualizador de Eventos
Os eventos gravados em uma sessão ETW pelo participante de acompanhamento do ETW podem ser acessados por meio do Visualizador de Eventos (ao usar a ID do provedor padrão). Isso permite a visualização rápida de registros de acompanhamento que foram emitidos pelo fluxo de trabalho.
Observação
Controlando o registro os eventos emissores a uma sessão de ETW usam IDs de evento no intervalo de 100 a 199.
Para habilitar a exibição dos Registros de Acompanhamento no Visualizador de Eventos
Iniciar o Visualizador de Eventos (EVENTVWR.EXE)
Selecione Visualizador de Eventos, Aplicativos e Logs de Serviço da Microsoft, o Windows, Aplicativos do Servidor de Aplicativo.
Clique com o botão direito do mouse para selecionar Exibição, Mostrar Análise e Logs de depuração. Se não, selecione-o para que a marca de seleção aparece próxima a ela. Isso exibe os logs Análise, Perf e Depurar.
Clique com o botão direito do mouse no log de Análise e selecione Habilitar Log. O log existirá no arquivo .etl do %SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-Application Server-Applications%4Analytic.etl.
Participante de rastreamento personalizada
O participante de rastreamento API permite a extensão de rastreamento usuário fornecido com o participante de rastreamento que pode incluir a lógica personalizada para manipular os registros de rastreamento emissores em runtime de fluxo de trabalho. Para escrever um participante de acompanhamento personalizado, o desenvolvedor deve implementar o método Track na classe TrackingParticipant. Esse método é chamado quando um registro de acompanhamento é emitido pelo runtime do fluxo de trabalho.
Os participantes de rastreamento derivam da classe de TrackingParticipant . Sistema forneceu EtwTrackingParticipant emite-se um rastreamento de evento para o evento do Windows (ETW) para cada registro de rastreamento que é recebido. Para criar um participante de acompanhamento personalizado, é criada uma classe que deriva de TrackingParticipant. Para fornecer a funcionalidade básica de acompanhamento, substitua Track. Track é chamado quando um registro de acompanhamento é enviado pelo runtime e pode ser processado da maneira desejada. No exemplo a seguir, uma classe de participante de acompanhamento personalizado é definida que emite todos os registros de acompanhamento para a janela do console. Você também pode implementar um TrackingParticipant objeto que processa os registros de acompanhamento de forma assíncrona usando seus métodos BeginTrack e EndTrack
class ConsoleTrackingParticipant : TrackingParticipant
{
protected override void Track(TrackingRecord record, TimeSpan timeout)
{
if (record != null)
{
Console.WriteLine("=================================");
Console.WriteLine(record);
}
}
}
Para usar um participante de acompanhamento específico, registre-o na instância de fluxo de trabalho que você deseja rastrear, conforme mostrado no exemplo a seguir.
myInstance.Extensions.Add(new ConsoleTrackingParticipant());
No exemplo a seguir, um fluxo de trabalho que consiste em uma Sequence atividade que contém uma WriteLine atividade é criado. O ConsoleTrackingParticipant é adicionado às extensões e o fluxo de trabalho é invocado.
Activity activity= new Sequence()
{
Activities =
{
new WriteLine()
{
Text = "Hello World."
}
}
};
WorkflowApplication instance = new WorkflowApplication(activity);
instance.Extensions.Add(new ConsoleTrackingParticipant());
instance.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
Console.WriteLine("workflow instance completed, Id = " + instance.Id);
resetEvent.Set();
};
instance.Run();
Console.ReadLine();