La flessibilità di LINQ ci permette di effettuare delle query di selezione su moltissime tipologie di dato. Una di queste può essere il log degli eventi del server (o semplicemente della macchina di sviluppo). Ogni tipologia di sorgente presente all'interno del log in questione è rappresentata nel .NET Framework attraverso una collezione di oggetti di tipo EventLogEntry.
Questa collezione, che viene esposta da una proprietà della classe EventLog, può essere utilizzata come fonte dati per una query LINQ in maniera veramente semplice.
EventLog log = new EventLog();
log.Source = "Application";
var query = from EventLogEntry entry in log.Entries
orderby entry.TimeGenerated descending
select entry;Utilizzando un pò di sintassi LINQ to XML, possiamo creare senza troppi sforzi la nostra personale utility per effettuare il backup del log degli eventi di giorno in giorno, su file XML, che possiamo poi decorare con fogli di stile XSLT per renderne più user-friendly la visualizzazione.
var xml = new XDocument(
new XElement("ApplicationLog",
from EventLogEntry entry in log.Entries
orderby entry.TimeGenerated descending
select new XElement("Log",
new XElement("Message", entry.Message),
new XElement("TimeGenerated", entry.TimeGenerated),
new XElement("Source", entry.Source),
new XElement("EntryType", entry.EntryType.ToString())
)
)
);
DateTime oggi = DateTime.Now;
string path = String.Format("{0}_{1}_{2}.xml", oggi.Year, oggi.Month, oggi.Day);
xml.Save(Path.Combine(Environment.CurrentDirectory, path));In questo modo, abbiamo una semplice utility di backup dell'event log filtrato per la sorgente "Application".
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Mischiare codice server side e client side in una query LINQ con Entity Framework
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Gli oggetti CallOut di Expression Blend 4.0
- Sfruttare una CDN con i bundle di ASP.NET
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform


