Heroes

 Busca Online:

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


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Gravando Erros com Exception no arquivo de log - Parte II

por Mauricio Junior em 1/1/2011 0

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

 

voltar   comente  subir

Download Copy





 
Mauricio Junior 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 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.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.org, Site pessoal www.mauriciojunior.org



Comentários:


Comente (dê sua opinião):

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

Torne-se Autor de Artigos
Usando public interface
Abrir o programa apenas uma vez
Ophone The Microsoft - Vídeo
Adicionar uma coluna em um DataTable
Exemplo do livro Programando em C# para Web
Ativando debug do VS no Vista
Importar projetos antigos para o Visual Studio 2010
Escrevendo e Controlando Log de Erro
O segredo de utilizar ModalPopupExtender
Construindo o Windows 8
IsAlphaNumeric
Vídeo Microsoft Visual SourceSafe Parte III 3/3
Método para ordenar DataTable
Dica: Pegar extensão, nome do arquivo e pasta
Multimídia C#.NET
Primeiros passos para um programador - Apple
Aspirador de pó inteligente
Sistema de Login em ASP – Parte X
Filtrar o DataTable Dinamicamente
Trabalhando com Cookie usando Visual Studio.NET 2005 (parte I)
Novo HTC com Windows Phone 7
Exemplo usando try e catch
Deletando todos os arquivos
Microsoft com XBox no Windows Phone 7
Web abrindo aplicações locais
Validator no VS 2005
Código fonte aberto
Criando arquivo usando Visual Studio.NET 2005
Orientação a Objetos - Microsoft PetShop 3.0
GridView - Valor total no footer
Trabalhando com o componente Accordion
Nem tudo é o que parece!
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
Trabalhando com Session




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...

Promoções de livros móveis .NET

Baixa agora o seu e aprenda a programar....




NETITC