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