“… No Windows, evento é uma ocorrência significativa no sistema ou em um programa e que exige que os usuários sejam notificados ou que uma entrada seja adicionada a um log. O serviço Log de eventos registra eventos de aplicativo, segurança e sistema no Visualizar eventos. Com os logs de evento no Visualizar eventos, é possível obter informações sobre o hardware, o software, os componentes de sistema e os eventos do monitor de segurança em um computador remoto ou local. Os logs de evento podem ajudar a identificar e diagnosticar a origem dos problemas de sistema atuais ou ainda prevê-los.”
Fonte: http://support.microsoft.com/kb/308427/pt-br
Sempre considerei um parte interessante do sistema um log de erro, embora tenha hoje minhas próprias rotinas a alguns anos houve uma necessidade de gravar esses eventos no log de eventos do Windows (disponível depois da versão 2000), nessa primeira parte do artigo vou ensinar como gravar as informações nesse log, nos próximos post’s faremos a leitura desses dados e a exclusão.
Vamos começar criando uma classe chamada eventLogWrite essa classe ira armazenar os códigos de escrita, pode fazer em módulo normal? Sinta se a vontade, mas recomendo o uso de classes.
Nessa classe coloque o código abaixo:
‘———————————————————————’ Modulo : eventLogWrite
‘ Data : 24/02/2010
‘ Programador: Rodrigo
‘ Contato : thabis.wired@hotmail.com
‘ Descrição : Responsavel pela gravação dos eventos no log do Windows
‘———————————————————————Option Explicit
Private zsSource As String
Private Declare Function RegisterEventSource Lib "advapi32.dll" Alias "RegisterEventSourceA" (ByVal lpUNCServerName As String, ByVal lpSourceName As String) As Long
Private Declare Function DeregisterEventSource Lib "advapi32.dll" (ByVal hEventLog As Long) As Long
Private Declare Function ReportEvent Lib "advapi32.dll" Alias "ReportEventA" (ByVal hEventLog As Long, ByVal wType As Long, ByVal wCategory As Long, ByVal dwEventID As Long, ByVal lpUserSid As Any, ByVal wNumStrings As Long, ByVal dwDataSize As Long, ByVal lpStrings As String, ByVal lpRawData As Any) As Long
Private Declare Function GetLastError Lib "kernel32" () As Long
Private Declare Function OpenEventLog Lib "advapi32.dll" Alias "OpenEventLogA" (ByVal lpUNCServerName As String, ByVal lpSourceName As String) As Long
Private Declare Function CloseEventLog Lib "advapi32.dll" (ByVal hEventLog As Long) As Long
Private Declare Function BackupEventLog Lib "advapi32.dll" Alias "BackupEventLogA" (ByVal hEventLog As Long, ByVal lpBackupFileName As String) As Long
Private Declare Function ClearEventLog Lib "advapi32.dll" Alias "ClearEventLogA" (ByVal hEventLog As Long, ByVal lpBackupFileName As String) As Long
Private Declare Function GetNumberOfEventLogRecords Lib "advapi32.dll" (ByVal hEventLog As Long, ByVal NumberOfRecords As Long) As Long
Private Declare Function GetOldestEventLogRecord Lib "advapi32.dll" (ByVal hEventLog As Long, ByVal OldestRecord As Long) As Long
Private Type EVENTLOGRECORD
Length As Long
Reserved As Long
RecordNumber As Long
TimeGenerated As Long
TimeWritten As Long
EventID As Long
EventType As Integer
NumStrings As Integer
EventCategory As Integer
ReservedFlags As Integer
ClosingRecordNumber As Long
StringOffset As Long
UserSidLength As Long
UserSidOffset As Long
DataLength As Long
DataOffset As Long
End Type
Public Enum eevLogType
EVENTLOG_SUCCESS = 0
EVENTLOG_ERROR_TYPE = 1
EVENTLOG_WARNING_TYPE = 2
EVENTLOG_INFORMATION_TYPE = 4
EVENTLOG_AUDIT_SUCCESS = 8
EVENTLOG_AUDIT_FAILURE = 10
End Enum