VB - Criando um arquivo de Log de erros


Embora o Visual Basic 6 não apresente um modelo de tratamento de erros amigável podemos usar recursos simples de forma a fazer um registro de log de erros para nossa aplicação de forma a documentar as ocorrências do sistema durante sua utilização. Podemos usar recursos avançados como classes e criar verdadeiros sistemas de trace de erro.

Meu objetivo aqui é mais simples. Vou mostrar como criar de forma beeemmm simples um log de registro de erros. Acompanhe:

- primeiro você deve definir onde deseja gravar e o que deseja gravar.

Vou gravar o log no arquivo chamado logErros.log que estará na pasta c:\log\

Vou registrar no arquivo os seguintes dados :

  1. Nome da aplicação

  2. Versão

  3. Descrição do erro

  4. Numero do erro

  5. A origem do erro

  6. A hora da ocorrência

Inicie um novo projeto no VB. E no formulário padrão insira dois botões de comando e uma caixa de texto multiline.

O código abaixo representa o código associado ao evento Click  do botão de comando : Gera Erro e Exibe Erros:

Private Sub Command1_Click()

On Error GoTo trata_Erro

'Estou forçando a ocorrência de um erro
Print 4 / 0
Exit Sub

trata_Erro:
If Err.Number <> 0 Then
   registraLogErros Err.Number, Err.Description, "Command1_click"
   Err.Clear
   Resume Next
End If
End Sub


Private Sub Command2_Click()
   leLog Text1
End Sub
 

Percebeu que temos duas rotinas:

  1. registraLogErros - passa os dados do erro para gravação no Log

  2. leLog - lê o arquivo de log e exibe na caixa de texto

Estas rotinas deverão estar em um módulo do seu projeto. Inclua um módulo no menu Project|Add Module e insira o código abaixo:

Option Explicit
Public caminho As String

Public Sub registraLogErros(ByVal lNumero As Long, ByVal sDescricao As String, ByVal sOrigem As String)

'define o objeto filesystem e demais variaveis
Dim fso As New FileSystemObject
Dim arquivo As File
Dim arquivoLog As TextStream
Dim msg As String

'se o arquivo não existir então cria
If fso.FileExists(caminho) Then
   Set arquivo = fso.GetFile(caminho)
Else
   Set arquivoLog = fso.CreateTextFile(caminho)
   arquivoLog.Close
   Set arquivo = fso.GetFile(caminho)
End If

'prepara o arquivo para anexa os dados
Set arquivoLog = arquivo.OpenAsTextStream(ForAppending)

'monta informações para gerar a linha com erro
msg = App.EXEName & " V " & App.Major & " " & " , Err. no: " & lNumero & " : " & sDescricao & " , Orig.: " & sOrigem & " , " & Now()

' inclui linhas no arquivo texto
arquivoLog.WriteLine msg
' escreve uma linha em branco no arquivo - se voce quiser
'arquivoLog.WriteBlankLines (1)

'fecha e libera o objeto

arquivoLog.Close
Set arquivoLog = Nothing
Set fso = Nothing

End Sub

Public Sub leLog(t As Control)

Dim fso As New FileSystemObject

'declara as variáveis objetos
Dim arquivo As File
Dim fsoStream As TextStream
Dim strLinha As String
Dim arquivologerros As String

'abre o arquivo para leitura
If fso.FileExists(caminho) Then
   Set arquivo = fso.GetFile(caminho)
   Set fsoStream = arquivo.OpenAsTextStream(ForReading)
Else
   MsgBox "O arquivo não existe", vbCritical
Exit Sub
End If

' le o arquivo linha a linha e exibe no text1

Do While Not fsoStream.AtEndOfStream
   strLinha = strLinha & fsoStream.ReadLine & vbCrLf
   t = strLinha
Loop

'libera as variaveis objeto
fsoStream.Close
Set fsoStream = Nothing
Set arquivo = Nothing
Set fso = Nothing

End Sub
 

Eu estou usando o objeto FileSystemObject para criar , ler e exibir os dados do arquivo de log. O modelo de objetos FSO está contida na biblioteca Scripting, que está localizada no arquivo Scrrun.Dll. Crie uma referência a biblioteca marcando na caixa de diálogo References o item "Microsoft Scripting Runtime".

Nota: Como o modelo FSO não suporta ainda a criação de arquivos randômicos ou binários. Para criar estes tipos de arquivos, use o comando Open com o argumento Random ou Binary. Abaixo uma rotina que escreve no log de erros usando o comando Open:

Public Sub registraLogErros(ByVal lNumero As Long, ByVal sDescricao As String, ByVal sOrigem As String)
Dim FileNum As Integer

FileNum = FreeFile

    'grava os erros no arquivo Erros.log
   Open caminho For Append As FileNum
   Write #FileNum, lNumero, sDescricao, sOrigem, Now()

Close FileNum
End Sub

 Para que tudo funcione você deve criar uma rotina sub Main no módulo com o código abaixo:

Private Sub main()
   caminho = "c:\log\logErros.log"
   Form1.Show vbModal
End Sub

Deve declarar também na seção General Declarations do módulo a variável caminho:

Option Explicit
Public caminho As String

Pronto agora é rodar , gerar os erros e exibí-los:


 

Você pode estruturar melhor a rotina que gera o log . Fique a vontade...

Até o próximo artigo VB...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti