|
<< Click to Display Table of Contents >> Trace |
![]() ![]()
|
Tracing é um processo de coleta de informações da aplicação em execução para facilitar o debug.
TraceContext
Este classe é responsável por exibir todas as informações obtidas com o Trace da execução da página
Por padrão, o Trace não vem habilitado na sua página. Para exibir as informações de Trace no rodapé de sua página adicione Trace = “True” na diretiva Page de sua página. Lembrando que a utilização na diretiva da página sobrescreve as configurações do Trace no arquivo Web.Config. Segue abaixo um exemplo de utilização na diretiva Page:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Trace="true" Inherits="_Default" %>
Para testar o trace:
Trace.Write("Teste 1"); // esse fica em preto
Trace.Warn("Alerta 1"); // esse fica em vermelho
Ao rodar o aplicativo:

Você pode também ativar via código.
Remova da diretiva de página e faça esse código:
protected void Page_Load(object sender, EventArgs e)
{
Trace.IsEnabled = true;
}
Web.config
No Web.Config, através do elemento <trace>, é possível habilitar a saída tanto na página quanto em um arquivo separado chamado trace.axd que pode ser acessado na raiz da aplicação, lembrando que esse arquivo não existe fisicamente, apenas na memória. Os atributos do elemento <trace>
<configuration>
<system.web>
<trace enabled="true"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true" />
</system.web>
</configuration>
enabled |
indica se o Trace será habilitado na aplicação. Se “True”, as informações do Trace podem ser vistas no “trace viewer”, ou seja, no arquivo trace.axd |
localonly |
indica se o “trace viewer” poderá ser visualizado apenas no cliente local ou por qualquer cliente |
pageOutput |
indica se as informações do Trace serão exibidas nas páginas |
requestLimit |
informa a quantidade de requisições a serem armazenadas no Trace |
traceMode |
informa a ordem das mensagens a serem exibidas no Trace |
Para visualizar, basta colocar o nome trace.axd no endereço do navegador:

Diagnostics.Trace e Diagnostics.Debug
Uma observação muito importante é não confundir o Page.Trace com a classe Trace, pois, enquanto o Page.Trace retorna um objeto da classe TraceContext, a classe Trace retorna da classe System.Diagnostics.
Podemos informar dois tipos de configuração no nosso projeto – DEBUG e RELEASE – sendo que ambos – Trace e Debug – são compilados caso seja definido modo DEBUG, e apenas o Trace é compilado caso a configuração do projeto esteja em modo RELEASE.
Essas classes são muito úteis na busca de erros e na correção dos mesmos, até mesmo quando você possui um código que insere em algum banco de dados, você pode verificar quais os valores passados no Trace ou Debug antes de inseri-los no Banco.
Por padrão a saída dos métodos de ambas as classes é feita na janela Output do VisualStudio .NET, mas podemos utilizar a coleção Listerners para termos outros tipos de saída. Alguns dos métodos mais utilizados para essas saídas são:
Write |
escreve uma informação – sem condições adicionais; |
WriteLine |
escreve uma informação – sem condições adicionais – uma por linha |
WriteIf |
escreve uma informação, apenas se a condição informada for verdadeira |
WriteLineIf |
escreve uma informação, apenas se a condição informada for verdadeira – uma por linha |
Assert |
verifica a condição, se a condição for falsa, escreve a mensagem |
Fail |
escreve uma mensagem de erro |
Exemplos de Utilização
using System.Diagnostics;
int A = 0, Z = 0;
System.Diagnostics.Trace.Write("Escrever mensagem");
System.Diagnostics.Trace.WriteLine("Escreve mensagem por linha");
Debug.WriteIf(A == Z, "A é igual a Z");
Debug.WriteLineIf(A == Z, "A é igual a Z");
System.Diagnostics.Trace.Assert(A == Z, "X não é igual a Y!");
Debug.Fail("Mensagem de erro.");
Trace Listerners
Comentamos bastante sobre os Listerners até agora! Agora veremos como funciona na prática os Listerners. Eles são responsáveis pela exibição das mensagens enviadas através dos objetos Trace e Debug.
A classe TraceListerner, trata-se de uma classe abstrata composta por três implementações, são elas:
DefaultTraceListerner |
Exibe as mensagens no janela Output do VisualStudio.NET – padrão |
TextWriterTraceListerner |
Escreve as mensagens em um objeto do tipo Stream, ou seja, podendo gravar em arquivos .txt. |
EventLogTraceListerner |
Escreve as mensagens no Event Log do Windows |
Abaixo segue um exemplo de utilização da classe:
FileStream objStream = new FileStream("C:\\AppLog.txt", FileMode.OpenOrCreate);
try
{
TextWriterTraceListener objTraceListener = new TextWriterTraceListener(objStream);
System.Diagnostics.Trace.Listeners.Add(objTraceListener);
System.Diagnostics.Trace.WriteLine("Hello 15Seconds Reader -- This is first trace message");
System.Diagnostics.Trace.WriteLine("Hello again -- This is second trace message");
Debug.WriteLine("Hello again -- This is first debug message");
}
catch (Exception)
{
System.Diagnostics.Trace.Flush();
objStream.Close();
}
Observação do Junior: esse exemplo acima até criou o arquivo, mas não gravou nada dentro - parece que foi erro de permissão
Conclusão
As classes TextContext, System.Diagnostics.Trace e System.Diagnostics.Trace podem ser de grande valia tanto no desenvolvimento de nossas aplicações quanto na manutenção das mesmas na busca e correção de erros.