Merhaba, bu yazıda C# dilinde EventLog sınıfının kullanımından bahsedeceğim. EventLog kullanarak programımızdaki olayları ve hataları bilgisayarımızda kayıt altında tutabiliriz. Bu tutulan kayıtları bilgisayarımızdaki Olay Görüntüleyicisi (Event Wiever) kısmından görüntüleyebiliriz.

Bir proje oluşturalım ve formumuza 3 adet Label (lblLogName, lblSourceName, lblGirdiSayisii), 1 adet Button (btnListele) ve 1 adet de ListBox (lbxEntries) ekleyelim ve alttaki resimde göründüğü gibi düzenleyelim.

Şimdi kodlarımızı yazalım. Bazı kodların açıklamaları içerisinde mevcuttur.
using System;
using System.Windows.Forms;
using System.Diagnostics; //EventLog sınıfının bulunduğu kütüphane
using System.Threading;
namespace eventlogdemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//EventLog sınıfından bir nesne oluşturdum
EventLog log = new EventLog();
private void Form1_Load(object sender, EventArgs e)
{
if (!EventLog.SourceExists("Yazılım Topluluğu Forum"))
{
//Eğer "Yazılım Topluluğu Forum" isimli event source yoksa oluşturalım
EventLog.CreateEventSource("Yazılım Topluluğu Forum", "yazilimtoplulugu.com");
}
//EventLog nesnemizi tanımladık
log.Log = "yazilimtoplulugu.com";
log.Source = "Yazılım Topluluğu Forum";
//Günlüğe istediğimiz türde entry (girdi) ekledik
log.WriteEntry("Bu bir uyarı mesajıdır.", EventLogEntryType.Warning);
log.WriteEntry("Bu bir bilgi mesajıdır.", EventLogEntryType.Information);
log.WriteEntry("Bu bir hata mesajıdır.", EventLogEntryType.Error);
lblLogName.Text = log.Log;
lblSourceName.Text = log.Source;
lblGirdiSayisi.Text = log.Entries.Count.ToString();
Thread th = new Thread(new ThreadStart(LogOverflowAction));
th.Start();
}
void LogOverflowAction()
{
//Günlüğün overflow (taşma) durumlarına göre yapılacak işlemler
switch (log.OverflowAction)
{
//Herhangi bir taşma sözkonusu değilse ilk durum çalışır
case OverflowAction.OverwriteOlder:
MessageBox.Show("Girdi en az " + log.MinimumRetentionDays.ToString() + " gün saklanacak.", "Bilgi", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
case OverflowAction.DoNotOverwrite:
MessageBox.Show("Eski girdilerin üzerine yazılamaz.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
case OverflowAction.OverwriteAsNeeded:
MessageBox.Show("Girdi sayısı maksimum boyut sınırına ulaştı ve yeni olay günlüğü girdisi en eski girdinin üzerine yazıldı.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning);
break;
default:
break;
}
}
private void BtnListele_Click(object sender, EventArgs e)
{
lbxEntries.Items.Clear();
foreach (EventLogEntry entry in log.Entries)
{
//Tüm girdileri çekip listboxa yazdırdım
lbxEntries.Items.Add(entry.Message); ;
}
}
}
}
Kodları yazdıktan sonra çalıştıralım.

Daha fazla bilgi için Microsoft dökümanlarına bu linkten ulaşabilirsiniz.
Konu hakkında sorularınızı yorumlarda belirtiniz.
Başka konularda görüşmek üzere, iyi forumlar 😉