Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Interrogare il registro eventi di Windows con LINQ e Visual Basic

Prendo spunto da un thread apparso oggi sul forum MSDN dedicato a Visual Basic, in cui si richiedeva come sia possibile interrogare il registro degli eventi di log di Windows, filtrando il risultato in base all'ID evento specificato.

Innanzitutto si ottiene un riferimento al registro degli eventi di Windows con un'istanza della classe System.Diagnostics.EventLog, al cui costruttore si passa, come argomento, il nome del log da interrogare (come Application, Security, Setup ecc.). Una volta ottenuta l'istanza, si scrive una query LINQ che selezioni solo gli entry (rappresentati da oggetti EventLogEntry) contraddistinti dall'ID desiderato. Il seguente codice esegue tutte queste operazioni:

        Dim eLog As New EventLog("Application")

 

 

        Dim specificEntries = From logEntry In eLog.Entries.Cast(Of EventLogEntry)()

                              Where logEntry.InstanceId = 9010

                              Select logEntry

Notate l'utilizzo dell'operatore Cast(Of T), che spesso è necessario in scenari LINQ to Objects, laddove il compilatore non sia in grado di inferire il tipo corretto. La proprietà EventLogEntry.InstanceId ci consente di confrontare l'ID evento desiderato (sulla mia macchina l'ID 9010 riguarda gli eventi generati da TFS 2010 Beta 2). Possiamo poi elaborare l'insieme così ottenuto (per esempio con un For..Each) per ottenere informazioni sull'evento, ad esempio l'applicazione che l'ha generato (proprietà EventLogEntry.Source) o il messaggio dell'evento (proprietà EventLogEntry.Message).

Alessandro

Print | posted on mercoledì 27 gennaio 2010 01:38 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET