Jump to content


Photo

Log De Erros


  • Faça o login para participar
1 reply to this topic

#1 Kurt

Kurt

    I'll posses your body and I'll make you burn!

  • Usuários
  • 85 posts
  • Sexo:Não informado
  • Localidade:Há alguns quilômetros de lugar algum
  • Interesses:Visual Basic, banco de dados e AutoCAD

Posted 18/10/2004, 19:52

Embora o VB 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 :

Nome da aplicação

Versão

Descrição do erro

Numero do erro

A origem do erro

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:

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

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!

Retirado de Macoratti.net
Private Sub (Mateus Dias Ribeiro)
If Você é novato Then
Leia as regras Else
Veja isto
End If

End Sub

#2 Sic

Sic

    Meu Reggae é Roots!

  • Usuários
  • 311 posts
  • Sexo:Masculino
  • Localidade:SP - ZL!
  • Interesses:Web, Desenvolvimento, Design, ITIL.<br /><br />Praia, Sol, Surf, Música, Violão e um Forreggae.

Posted 20/10/2004, 01:29

Boa kurt!

Valeu pelo tutorial!

Abraços!
Bruno Cesar Dutra - "Mudar é ir Além!"
UbuntuUser - 7.04

Poesias Trash - Idiotice & Conscientização | BlackVistaMod @ Tecnologia




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq