curso pr-tico de ms visual studio[1] net 2005
330 pág.

curso pr-tico de ms visual studio[1] net 2005

Disciplina:Tecnologias Web2.419 materiais6.995 seguidores
Pré-visualização35 páginas
Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Gravando Erros com Exception no arquivo de log - Parte II.doc

Visual Studio.NET 2005

Estou disposto a ensinar nessa parte II como gravar e mostrar o

funcionamento para gravar o erro gerado em sua aplicação. É muito

importante usar uma funcionalidade dessas na aplicação.

A cada erro que ocorrer dentro do software, site ou sistema interno o

mesmo irá gravar em um arquivo de log, que pode ser visualizado em

qualquer hora. O mesmo mostra a linha, a classe, hora, data e o erro em si

do que aconteceu. Facilita muito para ser resolvido o problema.

A parte I criada anteriormente, pode ser acessada pelo link:

www.aspneti.com ou www.aspneti.com.br

Não posso deixar de falar da nova ferramenta express criada pela Microsoft.

É uma ferramenta grátis para o desenvolvimento e pode ser adquirida via

internet. Tanto o banco de dados quanto a ferramenta de desenvolvimento

pode ser baixada gratuitamente.

http://msdn.microsoft.com/vstudio/express/

Continuando, na parte I mostrei o método principal que escreve dentro do

arquivo de log no diretório do sistema. Nessa parte mostrarei os outros

métodos construtores dentro da classe.

Como já foi falando junto a parte I, criei uma classe chamada

AppException.cs. (Referência 1.1)

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Referência: 1.1 – Exception Parte II

Já foi mostrado o método LogError anteriormente explicando linha por linha.

(Referência 1.2 – Exception Parte II)

public static void LogError(string message)

 {

 HttpContext context = HttpContext.Current;

 string filePath =

context.Server.MapPath(System.Convert.ToString(System.Configuration.Co

nfigurationSettings.AppSettings["ErrorLogFile"]));

 int gmtOffset = DateTime.Compare(DateTime.Now,

DateTime.UtcNow);

 string gmtPrefix;

 if (gmtOffset > 0)

 {

 gmtPrefix = "+";

 }

 else

 {

 gmtPrefix = "";

 }

 string errorDateTime = DateTime.Now.Year.ToString() +

"." + DateTime.Now.Month.ToString() + "." +

DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() +

":" + DateTime.Now.Minute.ToString() + ":" +

DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix +

gmtOffset.ToString() + ")";

 try

 {

 System.IO.StreamWriter sw = new

System.IO.StreamWriter(filePath, true);

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

 sw.WriteLine("## " + errorDateTime + " ## " +

message + " ##");

 sw.Close();

 }

 catch

 {

 }

 }

Referência: 1.2 – Exception Parte II

No passo seguinte, dentro da mesma classe criei os métodos construtores.

(Referência 1.3 – Exception Parte II).

 public AppException()

 {

 //apenas chamo o método para log de erro

 LogError("An unexpected error occurred.");

 }

 public AppException(string message)

 {

 //chamo o método passando o parâmetro passado na assinatura

do método.

 LogError(message);

 }

 public AppException(string message, Exception

innerException)

 {

 //mandando a mensagem para o log de erro

 LogError(message);

 if (innerException != null)

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

 {

 //se a mensagem de exception for diferente de null o mesmo

manda as mensagem para a classe de log de erro.

 LogError(innerException.Message);

 LogError(innerException.StackTrace);

 }

 }

Referência: 1.3 – Exception Parte II

Explicação:

Note que a referência 1.3 possui o comentário de todas as linhas dos

métodos construtores. Existem três métodos, um sem parâmetro de

entrada, outro com parâmetro de entrada do tipo string, cujo recebe apenas

uma mensagem e outro método recebendo uma string mensagem e uma

exception, ou seja, uma mensagem do tipo Exception.

Todos os métodos possuem o mesmo nome, isso significa que é sobre

posição de método.

Se tiver alguma dúvida em relação ao código mostrado, leia o comentário

de cada linha.

Configuração

O próximo passo é configurar endereço do arquivo log. Esse arquivo de

configuração dentro da aplicação pode ser o web.config ou o app.config

sem problema algum. (Referência 1.4 – Exception Parte II)

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

 <appSettings>

 <add key="ErrorLogFile" value="~/Errors/ErrorLog.txt" />

 </appSettings>

Referência: 1.4 – Exception Parte II

Explicação:

Existe a tag <appSettings> onde posso atribuir qualquer tipo de código ou

endereço que quiser. No meu caso, coloquei uma chave chamada

ErrorLogFile, com o valor indicando o endereço do arquivo .txt. (Referência

1.5 – Exception Parte II).

<add key="ErrorLogFile" value="~/Errors/ErrorLog.txt" />

Referência: 1.5 – Exception Parte II

O arquivo .txt já criado e colocado dentro da pasta Errors não tem nada

dentro. (Referência 1.6 – Exception Parte II)

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Referência: 1.6 – Exception Parte II

É um arquivo simples e qualquer.

Pronto, depois e ter o arquivo, criar a classe de appException.cs, criar os

métodos necessários; só falta forçar um erro para mostrar a real

funcionalidade.

Para quem não entendeu direito ou precisa do código da classe inteiro,

segue a referência 1.7 com todo o conteúdo necessário.

using System;

using System.Diagnostics;

using System.Web;

namespace WebChamps.Components.Web

{

 /// <summary>

 /// </summary>

 public class AppException: System.ApplicationException

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

 {

 public AppException()

 {

 LogError("An unexpected error occurred.");

 }

 public AppException(string message)

 {

 LogError(message);

 }

 public AppException(string message, Exception innerException)

 {

 LogError(message);

 if (innerException != null)

 {

 LogError(innerException.Message);

 LogError(innerException.StackTrace);

 }

 }

 public static void LogError(string message)

 {

 HttpContext context = HttpContext.Current;

 string filePath =

context.Server.MapPath(System.Convert.ToString(System.Configuration.Co

nfigurationSettings.AppSettings["ErrorLogFile"]));

 int gmtOffset = DateTime.Compare(DateTime.Now,

DateTime.UtcNow);

 string gmtPrefix;

 if (gmtOffset > 0)

 {

Curso Prático Visual Studio.NET 2005

Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

 gmtPrefix = "+";

 }

 else

 {

 gmtPrefix = "";

 }

 string errorDateTime = DateTime.Now.Year.ToString() +

"." + DateTime.Now.Month.ToString() + "." +

DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() +

":" + DateTime.Now.Minute.ToString() + ":" +

DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix +

gmtOffset.ToString() + ")";

 try

 {

 System.IO.StreamWriter sw = new

System.IO.StreamWriter(filePath, true);

 sw.WriteLine("## " + errorDateTime + " ## " +

message + " ##");

 sw.Close();

 }

 catch

 {

 }

 }

 }

}

Referência: 1.7 –