Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Retriving event logs faster vb.net

Posted on 2009-07-02
7
2,293 Views
Last Modified: 2013-11-08
Hello,

Today i use below function:

 Dim entry As EventLogEntry
            Dim EL As New EventLog("Application", server, service)
  For Each entry In EL.Entries
 If entry.Source = service Then

That works and all but the log file is sometimes very big which makes this function take very long time, even when i have specified a source in EL's properties it seams to download everything, thats why the if statement.  Is there anyway i can filter the source, and maybe the time before i actually downloading all the logs? if not, any other way to optimize this code to make it faster?

Kind regards,
Peter Hillerberg
0
Comment
Question by:carnegieuk
  • 3
  • 2
  • 2
7 Comments
 
LVL 9

Assisted Solution

by:Rahul Goel ITIL
Rahul Goel ITIL earned 70 total points
ID: 24770505
If you're both on Vista or Windows Server 2008, you're in luck. You should look at the new System.Diagnostics.Eventing.Reader.EventLogQuery and System.Diagnostics.Eventing.Reader.EventLogReader. These are new in .net 3.5.

Basically, you can build a query in XML and ship it over
0
 
LVL 9

Assisted Solution

by:Rahul Goel ITIL
Rahul Goel ITIL earned 70 total points
ID: 24770509
and you can use BackgroundWorker Thread with async results.
0
 
LVL 53

Accepted Solution

by:
Dhaest earned 430 total points
ID: 24770511
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:carnegieuk
ID: 24770523
Thanks very much for such a quick reply, however we are still on 2003... :(

any other possible solution?
0
 

Author Comment

by:carnegieuk
ID: 24770738
Thanks Dhaest,

I get an error when i run this:
Operation is not supported on this platform.

just wrote a shot test, but for some reason it's not working.

its netframework 3.5 (vb 2008 express)
the server i adress is 2003 sp2 i run it on a server 2003 sp2.

any ideas?

thanks!
Private Sub getmessages()
        
        Dim queryString As String = "*[System/Level=2]"  ' XPATH Query
 
        Dim session As EventLogSession = New EventLogSession(serverrc)
 
        ' Query the Application log on the remote computer.
        Dim query As EventLogQuery = New EventLogQuery( _
            "Application", PathType.LogName, queryString)
        query.Session = session
 
        Try
 
            Dim logReader As New EventLogReader(query)
 
            ' Display query results.
            DisplayEventAndLogInformation(logReader)
 
        Catch e As EventLogException
 
            MsgBox("Could not query the remote computer! " & e.Message)
            Return
        End Try
 
 
    End Sub
 
 
 
    Private Sub DisplayEventAndLogInformation(ByVal logReader As EventLogReader)
 
        Dim eventInstance As EventRecord = logReader.ReadEvent()
        While Not eventInstance Is Nothing
            ' Display event info
            MsgBox("-----------------------------------------------------")
            MsgBox("Event ID: {0}", eventInstance.Id)
            MsgBox("Publisher: {0}", eventInstance.ProviderName)
 
 
            Try
                MsgBox("Description: {0}", eventInstance.FormatDescription())
 
            Catch e As EventLogException
 
                ' The event description contains parameters, and no parameters were 
                ' passed to the FormatDescription method, so an exception is thrown.
 
            End Try
 
            eventInstance = logReader.ReadEvent()
 
            ' Cast the EventRecord object as an EventLogRecord object to 
            ' access the EventLogRecord class properties.
            Dim logRecord As EventLogRecord = CType(eventInstance, EventLogRecord)
            MsgBox("Container Event Log: {0}", logRecord.ContainerLog)
        End While
 
    End Sub
        Dim queryString As String = "*[System/Level=2]"  ' XPATH Query
 
        Dim session As EventLogSession = New EventLogSession(serverrc)
 
        ' Query the Application log on the remote computer.
        Dim query As EventLogQuery = New EventLogQuery( _
            "Application", PathType.LogName, queryString)
        query.Session = session
 
        Try
 
            Dim logReader As New EventLogReader(query)
 
            ' Display query results.
            DisplayEventAndLogInformation(logReader)
 
        Catch e As EventLogException
 
            MsgBox("Could not query the remote computer! " & e.Message)
            Return
        End Try
 
 
    End Sub
 
 
 
 
 
    Private Sub DisplayEventAndLogInformation(ByVal logReader As EventLogReader)
 
        Dim eventInstance As EventRecord = logReader.ReadEvent()
        While Not eventInstance Is Nothing
            ' Display event info
            MsgBox("-----------------------------------------------------")
            MsgBox("Event ID: {0}", eventInstance.Id)
            MsgBox("Publisher: {0}", eventInstance.ProviderName)
 
 
            Try
                MsgBox("Description: {0}", eventInstance.FormatDescription())
 
            Catch e As EventLogException
 
                ' The event description contains parameters, and no parameters were 
                ' passed to the FormatDescription method, so an exception is thrown.
 
            End Try
 
            eventInstance = logReader.ReadEvent()
 
            ' Cast the EventRecord object as an EventLogRecord object to 
            ' access the EventLogRecord class properties.
            Dim logRecord As EventLogRecord = CType(eventInstance, EventLogRecord)
            MsgBox("Container Event Log: {0}", logRecord.ContainerLog)
        End While
 
    End Sub

Open in new window

0
 
LVL 53

Assisted Solution

by:Dhaest
Dhaest earned 430 total points
ID: 24772370
Where exactly do you get the error ?
0
 

Author Comment

by:carnegieuk
ID: 24821011
Sorry dont remember where i got the problem exactly and i dont have the time to test this now. i have kinda solved it reading other logfile with same information. Thank you so much for your help.

0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question