Click here to Skip to main content
Click here to Skip to main content

Eventlog Viewer

, 14 Jun 2006
Rate this:
Please Sign up or sign in to vote.
A control to view an event log.

Sample Image

Introduction

Ever wanted to view the contents of the Windows event log from within your application? This article might be for you!

Background

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. Smile | :)

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

Points of interest

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.

History

  • Initial release.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Benjamin Liedblad
Software Developer (Senior)
United States United States
No Biography provided

Comments and Discussions

 
GeneralMy vote of 5 Pinmembermanoj kumar choubey26-Feb-12 20:38 
Generalquite helpful Pinmembervegeta4ss10-Feb-10 7:08 
GeneralHelps a lot Pinmemberrjknis29-May-07 0:10 
QuestionC/C++ version? Pinmemberminyang18-Jul-06 1:07 
AnswerRe: C/C++ version? PinmemberBenjamin Liedblad18-Jul-06 14:58 
GeneralRe: C/C++ version? Pinmemberminyang18-Jul-06 16:05 
GeneralEvent Viewer PinmemberJeremy L-T18-Jun-06 14:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.141223.1 | Last Updated 14 Jun 2006
Article Copyright 2006 by Benjamin Liedblad
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid