Escrevendo e Controlando Log de Erro


por Mauricio Junior em 1/1/2011 0

Hoje vou falar um pouco sobre uma funcionalidade que a maioria dos desenvolvedores não fazem, pois confiam que a aplicação não dará erro. Só que, o usuário sempre arruma um jeito de fazer o aplicativo dar erro. Risos!

Usado: C#.NET, Visual Studio 2010, Log de erro.

É importante ter sempre um método ou framework que grava os possíveis erros existentes no aplicativo. Esse método grava todo erro em forma de XML. O primeiro passo é gerar no aplicativo o AppSettings que controla o erro, isto é, 0 ou 1. Depois é necessário gerar outro AppSettings com o endereço full do arquivo.

O método precisa passar três parâmetros do tipo String. Descrição, Processo e Informação. (Code 1.1)


public bool Write(string Description, string Process,string Information)


Code 1.1

Se o desenvolvedor esquecer de colocar o AppSettings e chamar o método, não será executado porque existe a verificação. (Code 1.2)


if (System.Configuration.ConfigurationManager.AppSettings["Trac"] != null)


Code 1.2

Para controlar a aplicação na geração do erro ou não, precisa ter o valor 0 ou 1 pois o mesmo é verificado. (Code 1.3)


bool started = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["Trac"]);


if (started)

{

   ...

}


Code 1.3

Dentro do método também é verificado se o arquivo existe, se existir ele pega o caminho do arquivo, se não ele precisa gerar.  (Code 1.4)


string path = System.Configuration.ConfigurationManager.AppSettings["TraceFullPath"];


 System.IO.FileInfo file = new System.IO.FileInfo(path);


 if (file.Exists)

     logs.ReadXml(path);


Code 1.4

Segue o método completo. (Code 1.5)


public bool WriteLogErro(string Description, string Process, string Information)

        {

            try

            {

                if (System.Configuration.ConfigurationManager.AppSettings["Trac"] != null)

                {

                    bool started = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["Trac"]);

                    if (started)

                    {

                        TraceFile logs = new TraceFile();

                        string path = System.Configuration.ConfigurationManager.AppSettings["TraceFullPath"];


                        System.IO.FileInfo file = new System.IO.FileInfo(path);

                        if (file.Exists)

                            logs.ReadXml(path);


                        TraceFile.TraceRow log = logs.Trace.NewTraceRow();

                        log.Description = Description;

                        log.Process = Process;

                        log.DateTime = DateTime.Now;

                        log.Information = Information;

                        logs.Trace.Rows.Add(log);


                        logs.WriteXml(path);

                    }

                }

                return true;

            }

            catch

            {

                return false;

            }

        }


Code 1.5

O Code 1.5 mostra todo o método responsável pelo trace de log do aplicativo. Procure ter sempre esse tipo de método para gravar todos os possíveis erros e todos os processos. Você também pode colocar o método como estático, assim não precisa criar uma instância da classe para chamar o método. 

Para exemplificar, veja como fica no arquivo de configuração. (Code 1.6). Com o valor 1 o código vai gravar o trace.


<add key="Trac" value="1" />

<add key="TraceFullPath" value="c:\temp\aplicativo"/>


Code 1.6

Se for igual a 0, mesmo chamando o método o aplicativo não vai grava log de erro. (Code 1.7)


<add key="Trac" value="0" />

<add key="TraceFullPath" value="c:\temp\aplicativo"/>


Code 1.7

Espero que tenha entendido e qualquer dúvida, pode entrar em contato pelo site.


voltar   comente  subir

 
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

GMaps com ASP.NET
Trabalhando com Sessão dentro do Windows Forms
Vídeo - Mostrando um sistema com pocket pc
Vídeo aula explicando o que é o FreeTextBox e como utilizar em seu projetos ASP.NET.
Como criptografar a string de conexão no Web.Config.
Adicionando Menu no DataGridView
iMove Developer: chegou para te ajudar
Utilizando o GridView e DetailsView
Gerando uma dll com sistema web
Loja Apple (a2you.com.br) feita em .NET (Microsoft)
MinimizeBox no Celular
Windows Forms Application – Alterando Arquivo de Configuração Dinamicamente
Dica para buscar nome de tabelas ou stored procedures dentro do banco de dados
As várias maneiras de mandar e-mail utilizando .NET
Permissão de Página Utilizando Web.Config
Desenvolvendo com camadas utilizando C#
Vídeo - Conecte
Ordenando no DataTable
Como fazer uma enquete - parte 2
Problemas na acentuação
Ajax com Visual Studio.NET 2005
Artigo criando atalhos para a sua aplicação.
Inserindo no Sql Server
My Tracks
Encontrar o valor no texto
Aplicativos para Dispositivos Móveis, Usando C#.NET com a ferramenta Visual Studio.NET e com Banco de Dados MySQL e SQL Server
Vídeo - Google Earth Live em tempo real
Permitir Teste pelo Browser no WebService
Gerando Relatório e Exportando para o Excel Com Visual Studio.Net 2005
Montando Menu Dinâmico com Banco de Dados
Resources como padrão de mensagens
Método SHA 256
Enviado email anexado
Generics usando Object DataSource
Novo AjaxControlToolkit e Visual Studio 11