posts - 315, comments - 268, trackbacks - 15

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

EventLog

Piccolo post derivato da una risposta su un forum. Un semplice modo per dotare una nostra applicazione di un log degli eventi, è utilizzare la classe EventLog che il .Net Framework mette a disposizione. MSDN suggerisce, nel caso in cui si debba usare il log per poche operazioni di utilizzare i metodi statici della classe EventLog, altrimenti conviene registrare un log degli eventi personalizzato e utilizzare un'istanza della classe EventLog. Quando detto si traduce in poche righe di codice:

1 if (!EventLog.SourceExists("MyEventLog", ".")) 2 EventLog.CreateEventSource("MyEventLog", "CustomApplication"); 3 4 _demoLog = new EventLog("CustomApplication", ".", "MyEventLog");

Per aggiungere una nuova entry al log è sufficiente utilizzare il metodo WriteEntry:

1 _demoLog.WriteEntry("Evento click eseguito", EventLogEntryType.SuccessAudit);

Se ad esempio, volessimo visualizzare le entries del nostro  log in un controllo ListBox è sufficiente eseguire un ciclo for each sulla collezione Entries esposta dall'istanza di EventLog:

1 string entryMessage =""; 2 foreach (EventLogEntry entry in _demoLog.Entries ){ 3 entryMessage = string.Format ("{0} {1} {2}", 4 entry.EntryType.ToString (),entry.MachineName , 5 entry.Message ); 6 7 listBox1.Items.Add (entryMessage ); 8 }

Per cancellare le entries, utilizziamo il metodo Clear() dell'istanza:

1 _demoLog.Clear();

Nel caso in cui invece volessimo eliminare l'Event Log registrato, è sufficiente utilizzare il metodo statico Delete() :

1 EventLog.Delete("MyEventLog")

Importante (1): Per creare ed eliminare un event source ( e realtive entries)  è necessario che l'utente abbia i diritti di amministrazione, altrimenti a run-time verrà sollevata l'opportuna eccezione. Magari il log degli eventi potrebbe essere registrato sulla macchina in fase di installazione dell'applicazione, fase in cui ci si aspetta che l'utente che esegue il task sia in posseso degli opportuni diritti di amministrazione

Importante (2): Per utilizzare il sistema di logging è necessario che il sistema operativo che ospita l'applicazione sia Windows 2000, Windows XP, Windows 2003 Server o superiori (Windows 98 e Windows Millennium Edition non supportano l'Event log)

Oltre che da codice, possiamo visualizzare lo stato del nostro log utilizzando l'apposito Event Viewer richiamabile anche da riga di comando: eventvwr.exe

Per l'esempio indicato, su Windows Vista Ultimate, otteniamo:

image

Per approfondimenti, MSDN

Print | posted on lunedì 18 agosto 2008 16:02 | Filed Under [ C# ]

Feedback

Gravatar

# re: EventLog

davvero interessante,poco tempo fà anche io ho scritto un articolo del genere, però nell'articolo spiegavo come crearsi un sistema di log personalizzato in maniera molto semplice.
18/08/2008 20:35 | Fabrizio Lapiello
Gravatar

# re: EventLog

Ciao. Quando posso cerco di utilizzare le classi che il .Net Framework mette a disposizione degli sviluppatori, dato che testate e ottimizzate, anche se, non molto tempo fa, come tu hai fatto nel tuo post, ho dovuto implementare un meccanismo di log custom per rispondere a dei requisiti particolari di progetto.
19/08/2008 13:22 | Pietro Libro
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET