Partilhar via


Vestígios de diagnóstico

Rastreamentos são a publicação de mensagens específicas que são geradas durante a execução do aplicativo. Ao usar o rastreamento, você deve ter um mecanismo para coletar e gravar as mensagens enviadas. As mensagens de rastreamento são recebidas pelos ouvintes. O objetivo de um ouvinte é coletar, armazenar e rotear mensagens de rastreamento. Os ouvintes direcionam a saída de rastreamento para um destino apropriado, como um log, uma janela ou um arquivo de texto.

Um desses ouvintes, o , é criado e inicializado automaticamente quando o DefaultTraceListenerrastreamento está habilitado. Se desejar que a saída de rastreamento seja direcionada para quaisquer fontes adicionais, crie e inicialize ouvintes de rastreamento adicionais. Os ouvintes que você cria devem refletir suas necessidades individuais. Por exemplo, talvez você queira um registro de texto de todas as saídas de rastreamento. Nesse caso, você criaria um ouvinte que gravasse toda a saída em um novo arquivo de texto quando habilitado. Por outro lado, talvez você queira exibir apenas a saída durante a execução do aplicativo. Nesse caso, você pode criar um ouvinte que direcione toda a saída para uma janela do console. O EventLogTraceListener pode direcionar a saída de rastreamento para um log de eventos e o TextWriterTraceListener pode gravar saída de rastreamento para um fluxo.

Ativando o rastreamento

Para habilitar rastreamentos durante o processamento de transações, você deve editar o arquivo de configuração do aplicativo. A seguir encontra-se um exemplo.

<configuration>  
<system.diagnostics>  
     <sources>  
          <source name="System.Transactions" switchValue="Warning">  
               <listeners>  
                    <add name="tx"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData= "tx.log" />  
               </listeners>  
          </source>  
     </sources>  
</system.diagnostics>  
</configuration>  

System.Transactions os rastreamentos são gravados na fonte chamada "System.Transactions". Você pode usar add para especificar o nome e o tipo do ouvinte de rastreamento que deseja usar. Em nossa configuração de exemplo, nomeamos o ouvinte "tx" e adicionamos o ouvinte de rastreamento padrão do .NET Framework (XmlWriterTraceListener) como o tipo que queremos usar. Use initializeData para definir o nome do arquivo de log para esse ouvinte. Além disso, você pode substituir um caminho totalmente qualificado por um nome de arquivo simples.

A cada tipo de mensagem de rastreamento é atribuído um nível para indicar seu grau de importância. Se o nível de rastreamento do domínio do aplicativo for igual ou inferior ao nível de um tipo de evento, essa mensagem será gerada. O nível de rastreamento é controlado pela switchValue configuração no arquivo de configuração. Os níveis associados a mensagens de rastreamento de diagnóstico são definidos na tabela a seguir.

Nível de rastreio Description
Crítico Ocorreram falhas graves, como as seguintes:

- Um erro que pode causar uma perda imediata na funcionalidade do usuário.
- Um evento que requer que um administrador tome medidas para evitar a perda de funcionalidade.
- O código trava.
- Este nível de rastreio pode também fornecer contexto suficiente para interpretar outros vestígios críticos. Isso pode ajudar a identificar a sequência de operações que levam a uma falha grave.
Erro Ocorreu um erro (por exemplo, configuração inválida ou comportamento de rede) que pode resultar em uma perda de funcionalidade do usuário.
Aviso Existe uma condição que pode subsequentemente resultar em um erro ou falha crítica (por exemplo, falha de alocação ou aproximação de um limite). O processamento normal de erros do código do usuário (por exemplo, transação anulada, tempos limites, falha na autenticação) também pode gerar um aviso.
Informação São geradas mensagens úteis para monitorizar e diagnosticar o estado do sistema, medir o desempenho ou criar perfis. Estes podem incluir eventos de tempo de vida de transação e alistamento, como uma transação sendo criada ou confirmada, o cruzamento de um limite significativo ou a alocação de recursos significativos. Um desenvolvedor pode então utilizar essas informações para planejamento de capacidade e gerenciamento de desempenho.

Códigos de rastreio

A tabela a seguir lista os códigos de rastreamento gerados pela System.Transactions infraestrutura. Incluídos na tabela estão o identificador de código de rastreamento, o EventType nível de enumeração para o rastreamento e os dados extras contidos no TraceRecord para o rastreamento. Além disso, o nível de rastreamento correspondente do rastreamento também é armazenado no TraceRecord.

TraceCode EventType Dados extras no TraceRecord
TransaçãoCriado Informações TransactionTraceId
TransaçãoPromovida Informações TransactionTraceId local, TransactionTraceId distribuído
AlistamentoCriado Informações TransactionTraceId, EnlistmentTraceId, EnlistmentType (durável/volátil), EnlistmentOptions
AlistamentoCallbackNegativo Aviso TransactionTraceId, EnlistmentTraceId,

Retorno de chamada (forcerollback/abortado/indoubt)
TransactionRollbackCalled Aviso TransactionTraceId
TransaçãoAbortada Aviso TransactionTraceId
TransaçãoInDúvida Aviso TransactionTraceId
TransactionScopeCreated Informações TransactionScopeResult, que pode ser o seguinte:

- Nova transação.
- Transação aprovada.
- Transação dependente passada.
- Usando a transação atual.
- Nenhuma transação.

novo TransactionTraceId atual
TransactionScopeDisposed Informações TransactionTraceId da transação atual "esperada" do escopo.
TransactionScopeIncompleto Aviso TransactionTraceId da transação atual "esperada" do escopo.
TransactionScopeNestedIncorretamente Aviso TransactionTraceId da transação atual "esperada" do escopo.
TransactionScopeCurrentTransactionChanged Aviso TransactionTraceId atual antigo, outro TransactionTraceId
TransactionScopeTimeout Aviso TransactionTraceId da transação atual "esperada" do escopo.
DependentCloneCriado Informações TransactionTraceId, tipo de transação dependente criada (RollbackIfNotComplete/BlockCommitUntilComplete)
DependentCloneComplete Informações TransactionTraceId
RecuperaçãoConcluída Informações GUID do Resource Manager (a partir da base)
Reenlist Informações GUID do Resource Manager (a partir da base)
TransactionSerialized Informações TransactionTraceId.
TransactionException Erro Mensagem de exceção
InvalidOperationException Erro Mensagem de exceção
Erro interno Crítico Mensagem de exceção
TransferEvent Quando uma transação é desserializada ou promovida de uma System.Transactions transação para uma distribuída, o ActivityID atual do ExecutionContext e o ID da transação distribuída são gravados.

Quando o DTC chama de volta para o código gerenciado, o ID da transação distribuída é definido como o ActivityID no ExecutionContext para a duração do retorno de chamada.
ConfiguredDefaultTimeoutAdjusted Aviso Sem dados extras
TransactionTimeout Aviso O TransactionTraceId da transação que está sendo expirada.

O esquema XML para cada um dos itens de dados extras anteriores tem o seguinte formato.

TransactionTraceIdentifier

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

< CloneIdentifier >

the clone id number

</CloneIdentifier>

</TransactionTraceIdentifier>

EnlistmentTraceIdentifier

<EnlistmentTraceIdentifier>

<ResourceManagerId>

string form of guid

</ResourceManagerId>

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

<CloneIdentifier >

the clone id number

</CloneIdentifier>

<TransactionTraceIdentifier>

<EnlistmentIdentifier>

the enlistment id number

</EnlistmentIdentifier>

</EnlistmentTraceIdentifier>

Identificador do Resource Manager

<ResourceManagerId>

string form of guid

</ResourceManagerId>

Problemas de segurança para rastreamento

Quando você, como administrador, ativa o rastreamento, informações confidenciais podem ser gravadas em um log de rastreamento que pode ser visualizado publicamente por padrão. Para mitigar qualquer possível ameaça à segurança, você deve considerar armazenar o log de rastreamento em um local seguro controlado por permissões de compartilhamento e acesso ao sistema de arquivos.