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.