Escrevendo e Controlando Log de Erro (pt-BR)

Escrevendo e Controlando Log de Erro (pt-BR)

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.

This article was originally written by:
Maurício Júnior
MCP, MCAD, MVP Microsoft
www.mauriciojunior.org
blog.mauriciojunior.org

Leave a Comment
  • Please add 1 and 2 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Sort by: Published Date | Most Recent | Most Useful
Comments
  • Maurício Júnior - MCP, MCAD, MVP Microsoft edited Revision 2. Comment: Colocando autor.

  • Ed Price - MSFT edited Original. Comment: Excelente artigo! Obrigado por contribuir no TechNet Wiki! Eu adicionei (pt-BR) para o título e o "pt-BR" como uma marca. Fazemos isso para se certificar de que nós podemos encontrar todos os artigos em português. Obrigado! ||| English: Great article! Thank you for contributing on TechNet Wiki! I added (pt-BR) to the title and "pt-BR" as a tag. We do this to make sure we can find all the Portuguese articles. Thank you!

Page 1 of 1 (2 items)
Wikis - Comment List
Sort by: Published Date | Most Recent | Most Useful
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Comments
  • Ed Price - MSFT edited Original. Comment: Excelente artigo! Obrigado por contribuir no TechNet Wiki! Eu adicionei (pt-BR) para o título e o "pt-BR" como uma marca. Fazemos isso para se certificar de que nós podemos encontrar todos os artigos em português. Obrigado! ||| English: Great article! Thank you for contributing on TechNet Wiki! I added (pt-BR) to the title and "pt-BR" as a tag. We do this to make sure we can find all the Portuguese articles. Thank you!

  • Maurício Júnior - MCP, MCAD, MVP Microsoft edited Revision 2. Comment: Colocando autor.

Page 1 of 1 (2 items)