Hata Loglama Operasyonu (Json, Txt, XML Formatlarında)

Asp.net uygulamalarının çalışma zamanında oluşan hataların kayıt altına alınması ile ilgili bir loglama işlemini farklı formatlarda yapabilmeyi sağlayan bir helper class yazacağız.

Bu yazımda sizlere Asp.net uygulamalarının çalışma zamanında oluşan hataların kayıt altına alınması ile ilgili bir loglama işlemini farklı formatlarda yapabilmeyi sağlayan bir helper class yazacağız.

Loglama(günlük) işlemleri uygulamaların olmazsa olmazlarındadır.Yalnız oluşan hataların kaydı için değil işlemlerin gerçekleştiğini bildiren bilgi mesajlarıda aslında birer log türüdür.Şimdi yapacağımız uygulamaya dönelim.Şimdi senaryomuz şu şekilde bir helper sınıf aracılığıyla JSON, TXT ve XML dosya formatlarında loglama işlemi yapacağımız bir sınıf tasarlayacağız.

Json Formatı Ajax uygulamalarında daha çok kullanılıyor ama bu fırmattada log işlemeri tutmamız gerekebilir. En yaygın kullanılan txt dosya formatında kaydetmektir. Şu an kullandığın blog servisi blogengine de hataları bu formatta logluyor. XML bilindiği gibi esnek bir yapıya sahip. Bu şekildede loglayabiliriz.

Kodlarımıza geçelim. Bu formatları içeren bir enum sabiti tanımlıyorum.


public enum LogFormat:short

{

    Json,

    Xml,

    Txt

}



Daha sonra her log için bir struct tanımlıyorum. Oluşan loglarla ilgili alanlar olacak ve bu struct'ı loglama işlemi yapacağım, methoda parametre olarak göndereceğim.


public struct ErrorLog

{

    public string Kaynak { get; set; }

    public string Mesaj { get; set; }

    public string HedefYer { get; set; }

    public LogFormat Format { get; set; }

}



Şimdi bir sınıf oluşturalım adında ve aşağıdaki methodumuzu yazmaya başlayalım. Yardımcı bir method yazdığımız için projemizin her kısmında kullanabilmemiz gerekiyor; bu yüzden public ve static olması gerekmekte.


public static class LogOperation

{

    public static void WriteLog(ErrorLog error) 

    {        

        switch (error.Format)

        {

            case LogFormat.Json:

                JavaScriptSerializer js = new JavaScriptSerializer();

                string str = js.Serialize(error);

                File.WriteAllText(HttpContext.Current.Server.MapPath("~/App_Data/logs/log.json"), str);                

                break;

            case LogFormat.Xml:



                XElement xe = new XElement("Errors",

                            new XElement("Error",

                         new XElement("kaynak", error.Kaynak),

                         new XElement("mesaj", error.Mesaj),

                         new XElement("hedefyer", error.HedefYer)));



                xe.Save(HttpContext.Current.Server.MapPath("~/App_Data/logs/log.xml"));



                break;

            case LogFormat.Txt:

                using (FileStream stream = new FileStream(HttpContext.Current.Server.MapPath("~/App_Data/logs/log.txt"), 

                                                            FileMode.Append, FileAccess.Write))

                {

                    StreamWriter writer = new StreamWriter(stream);

                    StringBuilder strbuilder = new StringBuilder();

                    strbuilder.Append("Kaynak:" + error.Kaynak + "n");

                    strbuilder.Append("Mesaj :" + error.Mesaj + "n");                    

                    strbuilder.Append("Hedef Yer:" + error.HedefYer + "n");

                    strbuilder.Append("........................................");



                    writer.WriteLine(strbuilder.ToString());

                    writer.Close();

                }

                break;

            default:

                break;

        }

        

    }

}



Switch-case kullanarak istenilen formata göre loglama işlemi yapılmasını sağlayan kodlarımızı yazdık. Örneğin hata loglarını xml, bilgi loglarını json formatında yazabilirsiniz, bu size kalmış.

İsterseniz kodlarımızı Class diagramdan görelim.


işlemlerimiz bu kadar artık yaptığımız helper sınıfını kendi web uygulamalarınızda kullanabilirisiniz.

iyi çalışmalar dilerim

  • Etiketler;
Yunus Emre Keskin
Sakarya Üniversitesi BÖTE bölümü son sınıf öğrencisi. Üniversitenin ilk yılında Microsoft teknolojileriyle tanıştı ve 3 yıldır bu konularda çalışmalar ve projeler üretiyor. <p>Burada yayınladığı yazılar yapmış olduğu projelerde edindiği bilgilere dayanmaktadır.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

hocam çok teşekkürler.

Yukarı Git