Uygulamaların çalışırken neler yaptığını takip edebilmek, hata oluştuğunda bunları kayıt etmek ya da bazı uyarı mesajlarını kayıt altına almak için eminim bir çoğumuz .NET Framework içerisinde bulunan EventLog sınıfından yararlanmıştır. EventLog ile bildiğiniz gibi, Windows’da ki Event Viewer‘a az önce bahsetmiş olduğum tarzdaki bilgileri kayıt altında tutabiliyoruz. Benzer bir şekilde de Event Viewer’da ki kayıtları EventLog sınıfı ile takip de edebiliyoruz.

Basit bir senaryo gereği, Event Viewer’a atılan kayıtları takip etmemiz gerektiğini düşünelim. Ve Event Viewer’a atılan kayıtların belli durumlarına göre belli operasyonlar yapmamız gerektiğini düşünelim. Web servisi çağırmak, başka bir programı tetiklemek, e-mail atmak, belli ayarları değiştirmek falan gibi…

Bunları yapmak EventLog sınıfı ile oldukça basit. Aşağıdaki gibi bir kod parçası içeren bir Windows servisi Event Viewer’a atılan kayıtları takip etmemiz için yeterli olacaktır.


        static void Main(string[] args)
        {
            EventLog sourceEventLog = new EventLog();

            //EventViewer'da hangi Log kayıtlarını izleyeceğimizi
            //Log özelliği ile belirliyoruz.Uygulamamıza ait bir log kaydı daha doğru olacaktır.
            sourceEventLog.Log = "Application";

            //Event Viewer'a bir kayıt atıldığında çalışacak event'imizi tanımlıyoruz.
            sourceEventLog.EntryWritten += new EntryWrittenEventHandler(EntryWritten);

            //EnableRaisingEvents özelliğini true şeklinde belirterek,
            //EntryWritten event'lerinin tetiklenmesini sağlıyoruz.
            sourceEventLog.EnableRaisingEvents = true;

        }

        //Event Viewer'a kayıt atıldığında tetiklenen event'in metodu
        static void EntryWritten(object sender, EntryWrittenEventArgs e)
        {
            //Örnek olarak ATM uygulaması olsun mesela
            if (e.Entry.Source == "ATM Uygulaması")
            {
                switch (e.Entry.EntryType)
                {
                    case EventLogEntryType.Error:
                        //Web servis çağırıp, teknik destek ekibi için case açılabilir.
                        break;
                    case EventLogEntryType.Information:
                        //Para yatırılma işlemi seçildi, sahte para kontrolü yapan uygulamayı
                        //çalıştırabiliriz.Daha sonra kapatabiliriz.
                        break;
                    case EventLogEntryType.Warning:
                        if (e.Entry.EventID==9999)//Para azalıyor mesela
                        {
                            //Para azalıyor şeklinde bir uyarı ile operasyon birimine
                            //para göndermeleri hakkında bilgi gönderilebilir.
                        }
                        break;
                    default:
                        break;
                }

            }
        }

Bu basit yaklaşım, var olan mevcut bir uygulamann Event Viewer’a attığı kayıtlara göre aksiyon alabilmek adına oldukça faydalı olacaktır. Artık geliştirmek,süslemek ihtiyacan göre size kalmış…