LAYERDEV

 Busca Online:
 

Seja bem vindo(a) Visitante, você não está logado deseja logar
na comunidade ASPNETi.COM e participar de serviços e promoções ? clique aqui.

Gravando Erros com Exception no arquivo de log - Parte II



Data Publicação: 31/3/2006 14:02:24
Total de visualizações: 3376

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


Visual Studio.NET 2005

 

 

Olá pessoal, sou o Mauricio Junior e estou disposto a ensinar nessa parte II como gravar e mostrar o funcionamento para gravar o erro gerado em sua aplicação. É muito importante usar uma funcionalidade dessas na aplicação.

 

A cada erro que ocorrer dentro do software, site ou sistema interno o mesmo irá gravar em um arquivo de log, que pode ser visualizado em qualquer hora. O mesmo mostra a linha, a classe, hora, data e o erro em si do que aconteceu. Facilita muito para ser resolvido o problema.

 

A parte I criada anteriormente, pode ser acessada pelo link:

www.aspneti.com ou www.aspneti.com.br

 

Não posso deixar de falar da nova ferramenta express criada pela Microsoft. É uma ferramenta grátis para o desenvolvimento e pode ser adquirida via internet. Tanto o banco de dados quanto a ferramenta de desenvolvimento pode ser baixada gratuitamente.

 

http://msdn.microsoft.com/vstudio/express/

 

Continuando, na parte I mostrei o método principal que escreve dentro do arquivo de log no diretório do sistema. Nessa parte mostrarei os outros métodos construtores dentro da classe.

 

Como já foi falando junto a parte I, criei uma classe chamada AppException.cs. (Referência 1.1)

 

Referência: 1.1 – Exception Parte II

 

 

Já foi mostrado o método LogError anteriormente explicando linha por linha. (Referência 1.2 – Exception Parte II)

 

 

public static void LogError(string message)

                   {

                            HttpContext context = HttpContext.Current;

                            string filePath = context.Server.MapPath(System.Convert.ToString(System.Configuration.ConfigurationSettings.AppSettings["ErrorLogFile"]));

                            int gmtOffset = DateTime.Compare(DateTime.Now, DateTime.UtcNow);

                            string gmtPrefix;

                            if (gmtOffset > 0)

                            {

                                      gmtPrefix = "+";

                            }

                            else

                            {

                                      gmtPrefix = "";

                            }

                            string errorDateTime = DateTime.Now.Year.ToString() + "." + DateTime.Now.Month.ToString() + "." + DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix + gmtOffset.ToString() + ")";

                            try

                            {

                                      System.IO.StreamWriter sw = new System.IO.StreamWriter(filePath, true);

                                      sw.WriteLine("## " + errorDateTime + " ## " + message + " ##");

                                      sw.Close();

                            }

                            catch

                            {

                            }

                   }

 

Referência: 1.2 – Exception Parte II

 

No passo seguinte, dentro da mesma classe criei os métodos construtores. (Referência 1.3 – Exception Parte II).

 

 

          public AppException()

                   {

               //apenas chamo o método para log de erro

                            LogError("An unexpected error occurred.");

                   }

 

                   public AppException(string message)

                   {

               //chamo o método passando o parâmetro passado na assinatura do método.

                            LogError(message);

                   }

 

                   public AppException(string message, Exception innerException)

                   {

               //mandando a mensagem para o log de erro

                            LogError(message);

                            if (innerException != null)

                            {

                    //se a mensagem de exception for diferente de null o mesmo manda as mensagem para a classe de log de erro.

                                      LogError(innerException.Message);

                                      LogError(innerException.StackTrace);

                            }

                   }

 

Referência: 1.3 – Exception Parte II

 

Explicação:

 

Note que a referência 1.3 possui o comentário de todas as linhas dos métodos construtores. Existem três métodos, um sem parâmetro de entrada, outro com parâmetro de entrada do tipo string, cujo recebe apenas uma mensagem e outro método recebendo uma string mensagem e uma exception, ou seja, uma mensagem do tipo Exception.

Todos os métodos possuem o mesmo nome, isso significa que é sobre posição de método.

 

Se tiver alguma dúvida em relação ao código mostrado, leia o comentário de cada linha.

 

 

 

 

 

 

Configuração

 

O próximo passo é configurar endereço do arquivo log. Esse arquivo de configuração dentro da aplicação pode ser o web.config ou o app.config sem problema algum. (Referência 1.4 – Exception Parte II)

 

 

   <appSettings>

 

     <add key="ErrorLogFile" value="~/Errors/ErrorLog.txt" />  

 

  </appSettings> 

 

Referência: 1.4 – Exception Parte II

 

Explicação:

 

Existe a tag <appSettings> onde posso atribuir qualquer tipo de código ou endereço que quiser. No meu caso, coloquei uma chave chamada ErrorLogFile, com o valor indicando o endereço do arquivo .txt. (Referência 1.5 – Exception Parte II).

 

 

<add key="ErrorLogFile" value="~/Errors/ErrorLog.txt" />  

 

Referência: 1.5 – Exception Parte II

 

O arquivo .txt já criado e colocado dentro da pasta Errors não tem nada dentro. (Referência 1.6 – Exception Parte II)

 

Referência: 1.6 – Exception Parte II

 

É um arquivo simples e qualquer.

 

Pronto, depois e ter o arquivo, criar a classe de appException.cs, criar os métodos necessários; só falta forçar um erro para mostrar a real funcionalidade.

Para quem não entendeu direito ou precisa do código da classe inteiro, segue a referência 1.7 com todo o conteúdo necessário.

 

 

using System;

using System.Diagnostics;

using System.Web;

 

namespace WebChamps.Components.Web

{

         /// <summary>

        

         /// </summary>

         public class AppException: System.ApplicationException

         {

                   public AppException()

                   {

                            LogError("An unexpected error occurred.");

                   }

 

                   public AppException(string message)

                   {

                            LogError(message);

                   }

 

                   public AppException(string message, Exception innerException)

                   {

                            LogError(message);

                            if (innerException != null)

                            {

                                      LogError(innerException.Message);

                                      LogError(innerException.StackTrace);

                            }

                   }

 

                  

 

                   public static void LogError(string message)

                   {

                            HttpContext context = HttpContext.Current;

                            string filePath = context.Server.MapPath(System.Convert.ToString(System.Configuration.ConfigurationSettings.AppSettings["ErrorLogFile"]));

                            int gmtOffset = DateTime.Compare(DateTime.Now, DateTime.UtcNow);

                            string gmtPrefix;

                            if (gmtOffset > 0)

                            {

                                      gmtPrefix = "+";

                            }

                            else

                            {

                                      gmtPrefix = "";

                            }

                            string errorDateTime = DateTime.Now.Year.ToString() + "." + DateTime.Now.Month.ToString() + "." + DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix + gmtOffset.ToString() + ")";

                            try

                            {

                                      System.IO.StreamWriter sw = new System.IO.StreamWriter(filePath, true);

                                      sw.WriteLine("## " + errorDateTime + " ## " + message + " ##");

                                      sw.Close();

                            }

                            catch

                            {

                            }

                   }

         }

}

 

Referência: 1.7 – Exception Parte II

 

 

Na parte III mostrarei como utilizar a classe de erro usando como componente referenciado.

 

Espero ter ajudado de alguma forma.

 

Maurício Junior

www.ascompras.com

www.aspneti.com

mauricio@ascompras.com

 



Total de visualizações: 3376
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Permissão de Página Utilizando Web.Config
Desenvolvimento para TV Digital - Tópicos
Sistema ASP 3.0 utilizando 3 camadas – Parte 2
Vídeo do Visual SourceSafe - Parte I
O futuro da tecnologia com a Microsoft
Internet Explorer 8 RC em Português
TV no Celular com Windows Mobile
Como utilizar CSS no VS 2003
Novidades na maneira de colher informações do medidor de energia da sua casa
ASPNETi no seu celular
Convertendo e salvando imagens via código
Append Data Bound Items
Cache
Visual SourceSafe 2 / 3 parte
Instalar o Windows Marketplace no celular
Pagamento via celular
Criando uma aplicação de uma maneira nova para melhor publicação
Vídeo - Mitos da bateria
Sistema de Login – Parte IV
Desenvolvendo Aplicativos para TV Digital - Parte 3
Formatando String de Vários Tipos
Sistema de Login em ASP – Parte IX
Treinamento VSTS
Chart - novo componente integrado Visual Studio .NET 2010
Vídeo - Google Earth Live em tempo real
O Avanço do Blu-Ray no Brasil
Trabalhando com GridView e RowCommand
Sistema de Login em ASP Utilizando três camadas - Parte VIII
Calcular Média de Combustível
Estatística - Browser de Acesso
SQLEngine Utilizando Upgrade
Vídeo: Framework de dados - parte 1
Vídeo - iGas - Sistema de Gasolina Mobile
O vírus do curriculum
UPLOAD – Enviando imagem pela Internet
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org

Informações Online
Usuários Online: 1523
Artigos:  729
Vídeos:  59
PodCast's:  42
Fórum:  3127
Empregos:  1359
Usuários Cadastrados: 6080
Publicidade
LAYERDEV




Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC