Compartilhar via


Rastreamentos de diagnóstico

Os rastreamentos são a publicação de mensagens específicas que são gerados durante a execução do aplicativo. Ao usar o rastreamento, você deve ter um mecanismo para coletar e registrar as mensagens são enviadas. Mensagens de rastreamento são recebidas por ouvintes. A finalidade 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 ouvinte, o DefaultTraceListener, é criado e inicializado automaticamente quando o rastreamento está habilitado. Se desejar que a saída de rastreamento sejam direcionados para quaisquer outras fontes, você deve criar e inicializar ouvintes de rastreamento adicionais. Os ouvintes que você criar devem refletir suas necessidades individuais. Por exemplo, convém um registro de texto de toda a saída de rastreamento. Nesse caso, você criaria um ouvinte que escrevi todas as saídas para um novo arquivo de texto quando habilitado. Por outro lado, você talvez só queira exibir saída durante a execução do aplicativo. Nesse caso, você pode criar um ouvinte que direcionadas 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 a saída de rastreamento em um fluxo.

Habilitar o rastreamento

Para habilitar rastreamentos durante o processamento de transações, você deve editar o arquivo de configuração do aplicativo. A seguir, é mostrado 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 origem chamada "System.Transactions". Você pode usar add para especificar o nome e o tipo do ouvinte de rastreamento que deseja usar. Em nosso exemplo de configuração, é chamado o ouvinte "tx" e adicionado o ouvinte de rastreamento padrão do .NET Framework (XmlWriterTraceListener) como o tipo que deseja usar. Use initializeData para definir o nome do arquivo de log para esse ouvinte. Além disso, você pode substituir um caminho totalmente qualificado para um nome de arquivo simples.

Cada tipo de mensagem de rastreamento é atribuído um nível para indicar o grau de importância. Se o nível de rastreamento do aplicativo-domínio for igual ou menor do que o nível de um tipo de evento, essa mensagem é gerada. O nível de rastreamento é controlado pelo switchValue configuração no arquivo de configuração. Os níveis que estão associados com as mensagens de rastreamento de diagnóstico são definidos na tabela a seguir.

Nível de rastreamento: Descrição
Crítico Ocorreram falhas graves, como o seguinte:

- Um erro que pode causar uma perda de imediata na funcionalidade do usuário.
- Um evento que requer um administrador executar uma ação para evitar a perda de funcionalidade.
- Paradas de código.
- Esse nível de rastreamento também pode fornecer contexto suficiente para interpretar outros rastreamentos críticos. Isso pode ajudar a identificar a seqüência de operações que leva a uma falha grave.
Erro Ocorreu um erro (por exemplo, inválido configuração ou da rede comportamento) que pode resultar em uma perda de funcionalidade do usuário.
Aviso Existe uma condição que pode resultar em um erro ou uma falha crítica (por exemplo, alocação de falha ou alcançando o limite). O processamento normal de erros de código do usuário (por exemplo, transação anulada, tempos limite de falha de autenticação) também pode gerar um aviso.
Informações São geradas Mensagens úteis para monitorar e diagnosticar o status do sistema, medir o desempenho ou criar perfis. Eles podem incluir eventos de tempo de vida de transação e a inscrição, como uma transação que está sendo criado ou confirmadas, a interseção de um limite significativa ou a alocação de recursos significativos. Um desenvolvedor pode utilizar essas informações para o gerenciamento de desempenho e planejamento de capacidade.

Códigos de rastreamento

A tabela a seguir lista os códigos de rastreamento gerados pelo System.Transactions infra-estrutura. Incluído na tabela são o identificador de código de rastreamento, o nível de enumeração EventType 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 em TraceRecord
TransactionCreated Info TransactionTraceId
TransactionPromoted Info TransactionTraceId local, TransactionTraceId distribuída
EnlistmentCreated Info TransactionTraceId, EnlistmentTraceId, EnlistmentType (duráveis voláteis), EnlistmentOptions
EnlistmentCallbackNegative Aviso TransactionTraceId, EnlistmentTraceId,

Retorno de chamada (forcerollback/anulado/incertas)
TransactionRollbackCalled Aviso TransactionTraceId
TransactionAborted Aviso TransactionTraceId
TransactionInDoubt Aviso TransactionTraceId
TransactionScopeCreated Info TransactionScopeResult, que pode ser o seguinte:

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

novo TransactionTraceId atual
TransactionScopeDisposed Info TransactionTraceId do escopo "esperado" da transação atual.
TransactionScopeIncomplete Aviso TransactionTraceId do escopo "esperado" da transação atual.
TransactionScopeNestedIncorrectly Aviso TransactionTraceId do escopo "esperado" da transação atual.
TransactionScopeCurrentTransactionChanged Aviso Antigo TransactionTraceId atual, outro TransactionTraceId
TransactionScopeTimeout Aviso TransactionTraceId do escopo "esperado" da transação atual.
DependentCloneCreated Info TransactionTraceId, tipo de transação dependente criado (RollbackIfNotComplete/BlockCommitUntilComplete)
DependentCloneComplete Info TransactionTraceId
RecoveryComplete Info Gerenciador de recursos de GUID (de base)
Reenlist Info Gerenciador de recursos de GUID (de base)
TransactionSerialized Info TransactionTraceId.
TransactionException Erro Mensagem de exceção
InvalidOperationException Erro Mensagem de exceção
InternalError Crítico Mensagem de exceção
TransferEvent Quando uma transação é desserializada ou promovida de um System.Transactions transação para um distribuído, o ActivityID atual de ExecutionContext e a ID de transação distribuída são gravados.

Quando o DTC chama de volta em código gerenciado, a ID de transação distribuída é definida como o ActivityID em ExecutionContext durante o retorno de chamada.
ConfiguredDefaultTimeoutAdjusted Aviso Nenhum dado extra
TransactionTimeout Aviso TransactionTraceId da transação que está sendo atingiu o tempo limite.

O esquema XML para cada um dos itens de dados extras anterior 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 Gerenciador de recursos

<ResourceManagerId>

string form of guid

</ResourceManagerId>

Problemas de segurança para rastreamento

Quando você como administrador ative o rastreamento, informações confidenciais podem gravadas em um log de rastreamento que podem ser exibido publicamente por padrão. Para minimizar qualquer possível ameaça à segurança, considere armazenar o log de rastreamento em um local seguro controlado por permissões de acesso de compartilhamento e arquivo de sistema.