Desenvolvimento - C#

Escrevendo e Controlando Log de Erro

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.

por Mauricio Junior



          É 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.

Mauricio Junior

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 e sou editor do Linha de Código.
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.org
Site pessoal: www.mauriciojunior.org