VB .NET - Criando um log de eventos
Neste artigo vou mostrar como criar um log de eventos que pode ser usado como um log de auditoria usando a linguagem VB .NET. |
Normalmente, o depurador do Visual Studio
permite que você examine como um programa funciona com bastante eficácia,
mas às vezes é útil usar um registrador de eventos para gravar eventos para
estudos posteriores. Por exemplo, quando você está trabalhando com eventos
do mouse, interromper a execução em um ponto de interrupção muitas vezes faz
com que a sequência de eventos que o programa está tentando rastrear fique
confusa.
Podemos usar a classe SystemEvents que fornece acesso às notificações de eventos do sistema e também a fornece a capacidade para responder a tipos específicos de eventos do sistema para registrar o log na ocorrência de alguns eventos importantes.
Quando um evento do sistema é gerado, os delegados anexados ao evento são chamados usando a linha de execução que monitora os eventos do sistema. Portanto, você deve fazer qualquer chamada de seu manipulador de evento. Se você precisar chamar um evento do sistema que não é exposto como um membro da classe, você pode usar o método InvokeOnEventsThread.
Podemos então usar esta classe para verificar alterações no sistema operacional. Como a quantidade de eventos e condições que podem ser monitorados são enormes vou mostrar apenas alguns para que você tenha noção de como podemos usar este recurso.
Lembrando que SystemEvents são eventos disparados pelo sistema em resposta a ações que afetam o ambiente operacional. Não confunda SystemEvents com eventos Win32 que são eventos do Kernell acessíveis por todos os programas. Abaixo temos alguns eventos disparados pela classe SystemEvents:
Pois bem, com base nesses conceitos nosso trabalho será registrar os eventos desejados gravando informações sobre cada um deles em um arquivo texto.
Recursos Usados :
Criando o projeto Windows Forms
Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual Basic e o template Windows Classic Desktop ->Windows Forms Application(.NET Framework)
Informe um nome a seu gosto. Eu vou usar o nome vbn_logeventos
A seguir inclua os seguintes controles no formulário form1.vb a partir da ToolBox:
Disponha os controles conforme mostra a imagem da figura abaixo:
Implementando o código no formulário
Vamos agora definir o código no formulário Form1.vb começando com a declaração dos namespaces:
Imports Microsoft.Win32
No evento Load do formulário digite o código a seguir:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Define classe SystemEvents para receber as notificações dos eventos 'quando uma preferência do usuário for alterada, a paleta sofre alteração, a exibição das configurações mudar 'ou quando ocorrer uma alteração na data/hora AddHandler SystemEvents.UserPreferenceChanging, AddressOf SystemEvents_UserPreferenceChanging AddHandler SystemEvents.PaletteChanged, AddressOf SystemEvents_PaletteChanged AddHandler SystemEvents.DisplaySettingsChanged, AddressOf SystemEvents_DisplaySettingsChanged AddHandler Microsoft.Win32.SystemEvents.TimeChanged, AddressOf TimeChangedEvent
Logger.DeletaLog() |
Este código vai definir os eventos que desejamos tratar e deletar o arquivo de log.
A seguir crie uma classe chamada Logger.cs no projeto via menu Project -> Add Class com o seguinte código:
Imports System.IO Public NotInheritable Class Logger Private Sub New() ' Calcula o nome do arquivo de log ' Escreve a data e hora atual mais a linha de texto no arquivo de log ' Deleta o arquivo de log End Class |
Neste código definimos a classe Logger com os seguintes métodos:
Observe que a classe é NotInheritable, ou seja, é uma classe que não pode ser usada como uma classe base; uma classe que não pode ser herdada.
A seguir no formulário Form1.vb defina os eventos para os quais deseja registrar o log. A seguir temos alguns exemplos:
'Verifica alterações na data/hora do sistema Sub TimeChangedEvent(ByVal sender As Object, ByVal e As System.EventArgs) Logger.RegistraEvento("A data/hora do sistema foi alterada" & e.ToString()) End Sub ' Este método é chamado quando uma preferência do usuário é alterada. ' Este método é chamado quando a paleta é alterada. ' Este método é chamado quando as exibição das configurações muda ' Verifica as alterações das preferências do usuário Private Sub picPizza_MouseEnter(sender As Object, e As EventArgs) Handles picPizza.MouseEnter Private Sub picPizza_MouseClick(sender As Object, e As MouseEventArgs) Handles picPizza.MouseClick Private Sub picPizza_MouseLeave(sender As Object, e As EventArgs) Handles picPizza.MouseLeave Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged |
Executando o projeto iremos obter o resultado abaixo após realizar algumas operações e abrir o arquivo de Log:
Você pode ajustar o código incluindo muitas personalizações para atender o seu objetivo. Como por exemplo:
Pegue o código do projeto aqui : vbn_logeventos.zip
"E o mundo passa, e a sua
concupiscência; mas aquele que faz a vontade de Deus permanece para sempre."
1 João
2:17
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 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET ?
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
ASP .NET - Criando um log de erros para auditoria - Macoratti
log4net - Registrando eventos em um banco de dados - Macoratti
ASP .NET - Usando os recursos do Logging com o ... - Macoratti