//
// Copyright (c) 2002
// Ronald Kevin Burton
//
// Z poniższym kodem nie jest związana żadna gwarancja poprawności działania.
// Program został dołączony do książki ".NET CLR. Księga eksperta" w celu
// ilustracji koncepcji i zasad przedstawionych w tej książce. Program może być 
// używany na własne ryzyko.
//
// Przyznaje się prawo do użycia lub kopiowania tego oprogramowania do dowolnego celu
// bez konieczności ponoszenia żadnych opłat pod warunkiem, że powyższe uwagi zostaną 
// zachowane we wszystkich kopiach. Przyznaje się także prawo do modyfikacji kodu
// i dystrybucji zmodyfikowanego kodu pod warunkiem zachowania powyższych uwag
// oraz dołączenia informacji mówiącej o modyfikacji kodu.
//
//  
using System;
using System.Diagnostics;

namespace EventLogging
{
	/// <summary>
	/// Podsumowanie dla EventLoggingMain.
	/// </summary>
	class EventLoggingMain
	{
		const string log = "MyEventLog";
		const string source = "EventLoggingSource";
		
		static void Main(string[] args)
		{
			EventLog myApplicationLog = new EventLog("Application",".");
			foreach(EventLogEntry entry in myApplicationLog.Entries)
			{
				Console.WriteLine("\tEntry: " + entry.Message);
			}
			
//			if(!EventLog.SourceExists(source))
//			{
//				EventLog.CreateEventSource(source, log);
//			}
                
			// Utworzenie egzemplarza EventLog i przydzielenie jego źródła.
			EventLog myLog = new EventLog(log, ".", source);

			// Zapisanie wpisu informacyjnego do dziennika zdarzeń.    
			myLog.WriteEntry("Zapis informacji do dziennika zdarzeń.");
			myLog.WriteEntry("Zapis błędu do dziennika zdarzeń.", EventLogEntryType.Error);
			myLog.WriteEntry("Zapis ostrzeżenia do dziennika zdarzeń.", EventLogEntryType.Warning);
			myLog.WriteEntry("Zapis kontroli sukcesu do dziennika zdarzeń.", EventLogEntryType.SuccessAudit);
			myLog.WriteEntry("Zapis kontroli niepowodzenia do dziennika zdarzeń.", EventLogEntryType.FailureAudit);
			myLog.WriteEntry("Zapis do dziennika zdarzeń z identyfikatorem.", EventLogEntryType.Error, 1, 2);
			Console.ReadLine();
			myLog.Close();
			EventLog.DeleteEventSource("EventLoggingSource");
			EventLog.Delete("MyEventLog");
		}
	}
}
