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.
Using the code
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.
ds = New DataSet("EventLog Entries")
.Columns("Date/Time").DataType = GetType(System.DateTime)
If col.Name = "Date/Time" Then
col.ValueType = GetType(System.DateTime)
Points of interest
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.