sábado, 14 de maio de 2011

Gravando o log de erro em arquivo TXT

Por mais completa e robusta seja a uma aplicação, ela não está totalmente livre de gerar alguns erros/exceções inesperados em tempo de execução. O erro pode ser gerado de “n” situações: Servidor de dados indisponível, cálculo com um dos operandos portando um valor nulo, falha durante um envio de e-mail e muitas outras situações. Como uma boa prática, é imprescindível armazenar as informações do escopo do erro, já que em um outro momento (dependendo do grau do problema), o desenvolvedor terá que avaliar o acontecido.

É pensando neste cenário, que vamos demonstrar como criar um arquivo de texto .TXT para gravar os erros de uma  aplicação. Para criar o projeto, utilizou-se o Visual Studio 2010 Ultimate em linguagem VB.NET.

Abra o Visual Studio e crie um novo projeto (File > New > Project) do tipo Windows Forms Application em linguagem VB.NET.


Para lançar um erro em tempo de execução, vamos criar uma rotina básica para forçar um erro, que nada mais é do que dividir um número por zero “0”. Dê um duplo-clique no centro do Form1, para que o VS crie o escopo do evento Load do formulário. Escreva a listagem abaixo.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim valor1 As Integer = 5
    Dim valor2 As Integer = 0
    Try
        Dim ret As Integer = valor1 / valor2
    Catch ex As Exception
        Me.GerarLogErro(ex)
        MessageBox.Show("Ocorreu um erro inesperado. Avise ao suporte.", _
                        "Programação On-Line")
    End Try
End Sub

No código acima, utilizamos um bloco de tratamento de erro (Try… Catch) e quando o erro acontecer, os dados da exceção serão enviados para um método chamado GerarLogErro. A implementação do método segue abaixo.

Private Sub GerarLogErro(ByRef e As Exception)
    Try
        Dim sw As New StreamWriter("C:\LogErro.txt", True)
        With sw
            .WriteLine("Data: " & DateTime.Now.ToShortDateString())
            .WriteLine("Hora: " & DateTime.Now.ToShortTimeString())
            .WriteLine("Descrição do erro: " & e.Message)

            .WriteLine("Formulário: " & form)
            .WriteLine("Computador: " & My.Computer.Name)
            .WriteLine("Usuário: " & My.User.Name)
            .WriteLine("---")
            .Flush()
            .Dispose()
        End With
    Catch
    End Try
End Sub

Para exemplificar, o arquivo TXT será criado no caminho na unidade “C:\” (mas poderia ser criado em qualquer outra unidade). Testa a aplicação (tecla de atalho F5) e veja o resultado.


Para que o usuário saiba que ocorreu uma exceção, mostramos uma caixa de mensagem com uma informações genérica. Neste momento, o arquivo foi criado e o conteúdo do mesmo segue na imagem abaixo.


Este é um modo simples de como documentar as mensagens inesperadas que ocorrem no sistema. Espero que o material seja útil e até a próxima!

Nenhum comentário:

Postar um comentário

Deixe aqui seu comentário