![]() |
Languages »
C / C++ Language »
General
Intermediate
Eventlog ViewerBy Benjamin LiedbladA control to view an event log. |
VB.NET 2.0, WinXPVS2005, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

Ever wanted to view the contents of the Windows event log from within your application? This article might be for you!
Many of the applications that I develop require some form of logging. I have found that logging to the Windows event log is simple and painless, but having to exit my application and go look in the Windows NT Event Viewer is tough as items get old very fast. One feature that I find lacking in the Windows Event Viewer is that you cannot search, filter, or sort the log entries. I created this component for just that purpose.
The use of this component should be pretty straightforward. You need to add the component to the VS2005 toolbox, drag an EventLogViewer onto a form, and set the "Log" property to the log that you want to watch. There are a few other properties you might want to set (visibility of source, event ID, etc.), but you'll figure it out... If you are having a hard time using it, you must be doing something wrong.
In order to do the search/filter/sort, I used a DataSet in conjunction with a binding source. As I had to resort to the "Brute Force" method described by Christoph Wille's article "Displaying Event Log Entries the ASP.NET Way", the initial load time for the component was high; in my case, this gives me plenty of time to display a splash screen. :)
There isn't really code that is breath-taking here. One problem I had was getting the DataGridView to sort the logs by date/time properly. I found that both the DataGridView column and the underlying DataSet's column needed the DataType set in order for it to work.
' Setup the dataset
' (Don't forget to set the DataType of the "Date/Time" column)
ds = New DataSet("EventLog Entries")
ds.Tables.Add("Events")
With ds.Tables("Events")
.Columns.Add("Type")
.Columns.Add("Date/Time")
.Columns("Date/Time").DataType = GetType(System.DateTime)
.Columns.Add("Message")
.Columns.Add("Source")
.Columns.Add("Category")
.Columns.Add("EventID")
End With
...
' Set the column type of the DataGridView as well!
If col.Name = "Date/Time" Then
col.ValueType = GetType(System.DateTime)
End If
The DataGridView is awesome! I learned several things about it while writing this code... If you have not had a chance to use the DataGridView, have a look at it. Some of the visual queues (icons, colors, highlight of selected item, etc.) were taken from Microsoft examples on how to use the DataGridView, but you can do just about anything you want with it.
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 14 Jun 2006 Editor: Smitha Vijayan |
Copyright 2006 by Benjamin Liedblad Everything else Copyright © CodeProject, 1999-2009 Web22 | Advertise on the Code Project |