An EventLogEntry can also be written.
'EventLogManager.vbImports System.DiagnosticsPublic Class EventLogManager
Public Sub New(ByVal machineName As String)
Me.MachineName = machineNameGetEventLogs()
End Sub
Private strMachineName As String
Public Property MachineName() As String
Get Return strMachineNameEnd Get
Set(ByVal value As String)
strMachineName = value
End Set
End Property
Private dicEventLogs As New Dictionary(Of String, EventLog)
Public Property EventLogs() As Dictionary(Of String, EventLog)
Get Return dicEventlogsEnd Get
Set(ByVal value As Dictionary(Of String, EventLog))
dicEventlogs = value
End Set
End Property
Private dicEventLogObjects As New Dictionary(Of String, EventLogObject)
Public Property EventLogObjects() As Dictionary(Of String, EventLogObject)
Get Return dicEventLogObjectsEnd Get
Set(ByVal value As Dictionary(Of String, EventLogObject))
dicEventLogObjects = value
End Set
End Property
Private Sub GetEventLogs()
Try Me.EventLogs.Clear()Dim aEventLogs As EventLog() = EventLog.GetEventLogs(Me.MachineName)
For Each Log As EventLog In aEventLogs
If Not Me.EventLogs.ContainsKey(Log.Log) Then
Me.EventLogs.Add(Log.Log, Log) Else Me.EventLogs.Remove(Log.Log) Me.EventLogs.Add(Log.Log, Log)End If
If Not Me.EventLogObjects.ContainsKey(Log.Log) Then
Dim EventObj As New EventLogObject(Me, Log.Log, Log.Source)
Me.EventLogObjects.Add(Log.Log, EventObj) Else Me.EventLogObjects.Remove(Log.Log)Dim EventObj As New EventLogObject(Me, Log.Log, Log.Source)
Me.EventLogObjects.Add(Log.Log, EventObj)End If
NextCatch ex As Exception
MsgBox(GetErrorInfo(ex))
End Try
End Sub
Public Sub RefreshEventLog(ByVal EventLogName As String)
TryDim aEventLogs As EventLog() = EventLog.GetEventLogs(Me.MachineName)
Me.EventLogs.Clear()For Each Log As EventLog In aEventLogs
If Not Me.EventLogs.ContainsKey(Log.Log) Then
Me.EventLogs.Add(Log.Log, Log)End If
If LCase(Log.Log) = LCase(EventLogName) Then
If Not Me.EventLogObjects.ContainsKey(Log.Log) Then
Dim EventObj As New EventLogObject(Me, Log.Log, Log.Source)
Me.EventLogObjects.Add(Log.Log, EventObj) Else Me.EventLogObjects.Remove(EventLogName)Dim EventObj As New EventLogObject(Me, Log.Log, Log.Source)
Me.EventLogObjects.Add(Log.Log, EventObj)End If
End If
NextCatch ex As Exception
MsgBox(GetErrorInfo(ex))
End Try
End Sub
Public Function ClearEventLog(ByVal nameEventLog As String) As Boolean
Dim evLog As EventLog
TryIf Me.EventLogs.ContainsKey(nameEventLog) Then
evLog = Me.EventLogs(nameEventLog)evLog.Clear()
ElseReturn False
End If
Return True
Catch ex As Exception
MsgBox(GetErrorInfo(ex))
Return False
End Try
End Function
Public Function RemoveEventLog(ByVal NameEventLog As String) As Boolean
Dim EvLog As EventLog
TryIf Me.EventLogs.ContainsKey(NameEventLog) Then
EvLog = Me.EventLogs(NameEventLog) EventLog.Delete(EvLog.Log, Me.MachineName) ElseReturn False
End If
Return True
Catch ex As Exception
MsgBox(GetErrorInfo(ex))
Return False
End Try
End Function
Public Function RemoveEventSource(ByVal SourceName As String) As Boolean
TryIf EventLog.SourceExists(SourceName) Then
EventLog.DeleteEventSource(SourceName, Me.MachineName)End If
Return True
Catch ex As Exception
MsgBox(GetErrorInfo(ex))
Return False
End Try
End Function
Public Function AddEventSource(ByVal SourceName As String, ByVal EventLogName As String) As Boolean
TryIf Not EventLog.SourceExists(SourceName) Then
Dim eventCreateData As New EventSourceCreationData(SourceName, EventLogName)
eventCreateData.MachineName = Me.MachineNameEventLog.CreateEventSource(eventCreateData)
ElseReturn False
End If
Return True
Catch ex As Exception
MsgBox(GetErrorInfo(ex))
Return False
End Try
End Function
Public Function AddEventLog(ByVal NameSource As String, ByVal nameDisplay As String) As Boolean
TryIf Not EventLog.SourceExists(NameSource, Me.MachineName) Then
Dim eventCreateData As New EventSourceCreationData(NameSource, nameDisplay)
eventCreateData.MachineName = Me.MachineNameEventLog.CreateEventSource(eventCreateData)
End If
Dim eventlogke As New EventLog
With eventlogke.Log = nameDisplay
.Source = NameSource
.ModifyOverflowPolicy(OverflowAction.OverwriteAsNeeded, 1)
End With
Return True
Catch ex As Exception
MsgBox(GetErrorInfo(ex))
Return False
End Try
End Function
Public Function WriteEventLogEntry(ByVal nameEventLog As String, ByVal source As String, ByVal Message As String, ByVal TypeEvent As EventLogEntryType) As Boolean
Dim EvLog As EventLog
TryIf Me.EventLogs.ContainsKey(nameEventLog) Then
EvLog = Me.EventLogs(nameEventLog)If Not EventLog.SourceExists(source) Then
EventLog.CreateEventSource(source, nameEventLog)
End If
With EvLog .MachineName = Me.MachineName.Log = nameEventLog
.Source = source
.WriteEntry(Message, TypeEvent)
End With
ElseReturn False
End If
Return True
Catch ex As Exception
MsgBox(GetErrorInfo(ex))
Return False
End Try
End Function
Public Class EventLogObject
Private f As New Form
Private p As New ProgressBar
Private l As New Label
Private LocationW As Integer
Private LocationH As Integer
Private canceled As Boolean = False
Public Sub New(ByVal parent As EventLogManager, ByVal Name As String, ByVal source As String)
Me.Parent = parent Me.Name = Name Me.Source = sourceEnd Sub
Public Sub New(ByVal parent As EventLogManager, ByVal Name As String, ByVal source As String, ByVal NeedEntries As Boolean)
Me.Parent = parent Me.Name = Name Me.Source = sourceIf NeedEntries Then
GetEntries()
End If
End Sub
Public Sub New(ByVal parent As EventLogManager, ByVal Name As String, ByVal source As String, ByVal NeedEntriesWaitForm As Boolean, ByVal mainform As Form)
Me.Parent = parent Me.Name = Name Me.Source = sourceIf NeedEntriesWaitForm Then
If Not mainform Is Nothing Then
GetEntriesWaitForm(mainform)
Else MsgBox("Provide the parent form!")End If
End If
End Sub
Public Sub GetEntries()
Dim i As Int64 = 1
Dim eventL As EventLog
Dim eventEntryObj As EventLogEntriesObject
eventL = Parent.EventLogs(Me.Name)For Each entr As EventLogEntry In eventL.Entries
eventEntryObj = New EventLogEntriesObject(Me)
With eventEntryObj.Category = entr.Category
.DateEvent = CStr(entr.TimeWritten).EventID = entr.InstanceId
.Computer = entr.MachineName
.Message = entr.Message
.Source = entr.Source
.Type = [Enum].GetName(GetType(EventLogEntryType), entr.EntryType)
.Index = i 'entr.IndexEnd With
i = i + 1
Me.EventLogEntries.Add(eventEntryObj) NextEnd Sub
Public Sub GetEntriesWaitForm(ByVal mainform As Form)
f.Size = New Point(250, 100) f.Text = "Processing Eventlog Entries" LocationW = mainform.Location.X + mainform.Width / 2 '(System.Windows.Forms.Application.OpenForms(mainform.Name).Location.X) + (System.Windows.Forms.Application.OpenForms(mainform.Name).Width / 2) LocationH = mainform.Location.Y + mainform.Height / 2 '(System.Windows.Forms.Application.OpenForms(mainform.Name).Location.Y) + (System.Windows.Forms.Application.OpenForms(mainform.Name).Height / 2)f.FormBorderStyle = FormBorderStyle.FixedDialog
p.Style = ProgressBarStyle.Blocks
p.Step = 1 p.Size = New Point(230, 20) p.Location = New Point(10, 20)p.Minimum = 0
f.Controls.Add(p)
l.Text = "Eventlog Entries : 0/100" l.Location = New Point(8, 43) l.AutoSize = Truef.Controls.Add(l)
AddHandler f.Shown, AddressOf ProcessEntries
AddHandler f.FormClosing, AddressOf CloseWaitForm
f.ShowDialog()
End Sub
Private Sub CloseWaitForm()
canceled = Truef.Dispose()
System.Windows.Forms.Application.OpenForms(0).BringToFront()
End Sub
Private Sub ProcessEntries()
f.Left = LocationW
f.Top = LocationH
Dim i As Int64 = 1
Dim eventL As EventLog
Dim eventEntryObj As EventLogEntriesObject
eventL = Parent.EventLogs(Me.Name)p.Maximum = eventL.Entries.Count
l.Text = "Eventlog Entries : 0/" + CStr(eventL.Entries.Count)
For Each entr As EventLogEntry In eventL.Entries
If canceled Then Exit Sub
eventEntryObj = New EventLogEntriesObject(Me)
With eventEntryObj.Category = entr.Category
.DateEvent = CStr(entr.TimeWritten).EventID = entr.InstanceId
.Computer = entr.MachineName
.Message = entr.Message
.Source = entr.Source
.Type = [Enum].GetName(GetType(EventLogEntryType), entr.EntryType)
.Index = i 'entr.IndexEnd With
i = i + 1
Me.EventLogEntries.Add(eventEntryObj)p.PerformStep()
l.Text = "Eventlog Entries : " + CStr(i) + "/" + CStr(eventL.Entries.Count)
Application.DoEvents()
Nextf.Dispose()
End Sub
Private strName As String
Public Property Name() As String
Get Return strNameEnd Get
Set(ByVal value As String)
strName = value
End Set
End Property
Private strSource As String
Public Property Source() As String
Get Return strSourceEnd Get
Set(ByVal value As String)
strSource = value
End Set
End Property
Private objParent As EventLogManager
Public Property Parent() As EventLogManager
Get Return objParentEnd Get
Set(ByVal value As EventLogManager)
objParent = value
End Set
End Property
Private listEventLogEntries As New List(Of EventLogEntriesObject)
Public Property EventLogEntries() As List(Of EventLogEntriesObject)
Get Return listEventLogentriesEnd Get
Set(ByVal value As List(Of EventLogEntriesObject))
listEventLogentries = value
End Set
End Property
Public Class EventLogEntriesObject
Public Sub New(ByVal parent As EventLogObject)
Me.Parent = parentEnd Sub
Private objParent As EventLogObject
Public Property Parent() As EventLogObject
Get Return objParentEnd Get
Set(ByVal value As EventLogObject)
objParent = value
End Set
End Property
Private strDate As String
Public Property DateEvent() As String
Get Return strDateEnd Get
Set(ByVal value As String)
strDate = value
End Set
End Property
Private strType As String
Public Property Type() As String
Get Return strTypeEnd Get
Set(ByVal value As String)
strType = value
End Set
End Property
Private strSource As String
Public Property Source() As String
Get Return strSourceEnd Get
Set(ByVal value As String)
strSource = value
End Set
End Property
Private strEventID As String
Public Property EventID() As String
Get Return strEventIDEnd Get
Set(ByVal value As String)
strEventID = value
End Set
End Property
Private strComputer As String
Public Property Computer() As String
Get Return strComputerEnd Get
Set(ByVal value As String)
strComputer = value
End Set
End Property
Private strCategory As String
Public Property Category() As String
Get Return strCategoryEnd Get
Set(ByVal value As String)
strCategory = value
End Set
End Property
Private intIndex As Int64
Public Property Index() As Int64
Get Return intIndexEnd Get
Set(ByVal value As Int64)
intIndex = value
End Set
End Property
Private strMessage As String
Public Property Message() As String
Get Return strMessageEnd Get
Set(ByVal value As String)
strMessage = value
End Set
End Property
End Class
End Class
End Class
Added some initializers to the class:
ReplyDeleteNew() without getting the eventlog entries
New() with getting the eventlog entries
New() with progress form processing entries
Made GetEntries() a Public Sub
Added Public Sub GetEntriesWaitForm()