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.