Busca online em todo site:
NETITC

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.




Título do Artigo

Gravando Erros com Exception no arquivo de log - Parte II


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

comente
 


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: 2699
voltar   comente  subir

Autor:


Por: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


Comentários:


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

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

Microsoft abre sua loja de aplicativos para desenvolvedores de software mobile
Adicionando Ícones no Windows Forms
Retirar Tag HTML dos campos utilizando expressão
Teclas de atalho - Visual Studio .NET 2005
Código fonte aberto
Visualizar no Próprio Mail (Macbook)
Ophone The Microsoft - Vídeo
Crie a sua própria rede social no ning
Mensagem JavaScript com .NET
Usando themes ASP.NET 2.0 (Parte 1)
UPLOAD – Enviando imagem pela Internet
Visitas na Comunidade ASPNETi.COM
Vírus - Full video Pamela Anderson
Vídeo - Sistema de Atendimento de Clientes
Instalando o .NET Compact Framework 2.0 SP2 em seu Dispositivo Móvel
O vírus do curriculum
Vírus - Telegrama Eletrônico
Ebook Grátis Microsoft
Vídeo - Mostrando um sistema com pocket pc
SQL Server 2005 SP2 já está disponível :)
Vírus - Link com Vírus
Ext JS
Gravando erros com eventlog - Parte I
Public Interface
Microsoft lança seu próprio QRCode
Pagamento via celular
Armazenando dados no ViewState – Parte I
Acessando banco de dados com pocket pc
O futuro da tecnologia com a Microsoft
Virtual Earth - Segundo Passo
Win the 7
Mais detalhes sobre o HTC Touch HD 2 com o possível Windows Mobile 7
QR Code com ASP.NET
Vídeo - Criando um WebBrowser
Registro Encontro .NET (Fotos)

Publicidade:

[sumir] [aparecer]
DEVMEDIA




Informaes Online:

Usurios Online: 736
Artigos:  663
Vdeos:  47
PodCast's:  31
Frum:  3098
Empregos:  1226
Usurios Cadastrados: 5794

Categoria de Artigos

Vdeos

Enquete - D sua opinio

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 382 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC