Effettuare il backup dell'event viewer con LINQ to XML

di Giuseppe Marchi, in LINQ, LINQ To XML, UserScript,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi