Log4Net ve Chainsaw ile Loglama

   Hatırlarsanız sizlere daha önce de loglamanın hata yakalamada biz yazılımcıların hayatımızı ne kadar kolaylaştırdığından bahsetmiştim. Biz yazılımcıların bu konudaki belki de en büyük yardımcılarından birisi de Log4Net kütüphanesidir. Java dünyasındaki kardeşi Log4J’nin büyük başarısını .net dünyasında sürdüren bu kütüphaneden daha önce sizlere bahsetmiş, nasıl kullanıldığını örneklemiştir. Hiç şüphesi ki her ikisi de Apache Foundation’ın hayatımıza kattığı önemli kütüphanelerdendir.

   Bu makalemde sizlere Log4Net’in hayatımıza kattıkları ve uygulamalarınızda nasıl kullanabileceğinizde bahsetmeyeceğim, bu konuda bilgiyi “Log4Net ile Hata Ayıklama” başlıklı yazımda bulabilirsiniz. Bu makalemde bundan ziyade, geliştirme aşamasında atılan logları nasıl gerçek zamanlı olarak izleyebileceğinizden bahsediyor olacağım.

   Log4Net’in en çok kullanılan appender’larından birisi eminim ki dosya appender’ıdır; fakat geliştirme zamanında logları görebilmek için bu dosyayı devamlı açıp kapatmak oldukça zor olacaktır. Bu sıkıntıyı aşmak için kimi yazılımcılar editörlerin nimetlerinden yararlanarak dosya her değiştiğinden yeniden yüklenmesini sağlar; fakat log dosyasının boyutu büyüdükçe bu da bir problem olacaktır. Peki java dünyasında bu problem nasıl aşılıyor? Log4J’de bu sıkıntı nasıl çözülmüş?

   Java dünyasında Log4J geliştiricileri, pek çok farklı veri kaynağından log verisini okuyarak bu verileri güzel bir ara yüz üzerinden bizlere sunacak başarılı bir uygulama geliştirmişlerdir; Chainsaw.

Chainsaw ana enkranı

   Java tabanlı olarak geliştirilmiş olan bu uygulama ile uygulama loglarını inceleyebilir, girdilere log seviyesine göre farklı renkler atayabilir, filtreleme ve arama yapabilirsiniz. Uygulamanın java tabanlı olması nedeniyle kullanılabilmesi için öncelikle bilgisayarınız java çalışma-zamanının kurulu olması gerekecektir. Bu kurulum ardından da Chainsaw’u indirip hemen kullanmaya başlayabilirsiniz. Aynı Log4J/Log4Net gibi birden fazla appender’ı destekleyen ve bunları aynı anda takip eden Chainsaw, ihtiyacı olan yapılandırma bilgisini bir yapılandırma dosyasında okuyabilir ya da çalışma zamanında sizin yapılandırmanıza izin verir.

   Şimdiye kadar paylaştıklarım hep Log4J ve java dünyasına yönelik kullanılan yöntemlerdi; ama sıkı durun, Chainsaw uygulamasını Log4Net ile birlikte de kullanabilirsiniz. Şimdiye kadar araştırdığım pek çok açık kaynak kodlu/ücretsiz log takip çözümü inanın ki Chainsaw kadar başarılı bulmadım. Dolayısıyla da Chainsaw’u .Net içerisinde de kullanabiliyor olmak inanın ki oldukça önemli. Standart bir iş günümde devamlı açık olan iki uygulamamda birisi Visual Studio iken, diğeri de Chainsaw’dur. Peki Chainsaw’u Log4Net ile nasıl kullanabiliriz?

   Chainsaw’u Log4Net ile birlikte kullanmanın en güzel yolu UDP appender’ı olacaktır. Log verisinin UDP paketleri olarak gönderiliyor olması, standart TCP/IP ile veri gönderim yöntemlerine kıyasla daha performanslı olacaktır. Bunun en önemli sebebi, UDP paketlerinin teslim edilip edilmediğinin kontrol edilmiyor olmasıdır. İnternet üzerinden bir işlem yapılıyorsa bu durum zaman zaman sıkıntı yaratsa da, bizim işimizin localhost üzerinde ya da en kötü ihtimalle bile aynı network üzerinde olacağını düşünürsek bir sorun  teşkil etmeyecektir.

   Chainsaw ile konuşmak için oluşturacağımız Log4Net UDP appender yapılandırmasında dikkat etmemiz gereken tek nokta; oluşturulan log girdilerinin Log4J şemasına uygun olarak üretiliyor olmasıdır. Bunun için de XmlLayoutSchemaLog4j layout’u kullanılabilir. Aşağıda, localhost üzerinden 8080 portuna XmlLayoutSchemaLog4j layout’u ile log verisini UDP paketi olarak gönderebilmek için ihtiyacınız olan Log4Net yapılandırmasını bulabilirsiniz;

<log4net>
   <appender name="UdpAppender" type="log4net.Appender.UdpAppender">
     <param name="RemoteAddress" value="127.0.0.1" />
     <param name="RemotePort" value="8080" />
     <layout type="log4net.Layout.XmlLayoutSchemaLog4j, log4net" />
  </appender>
  <root>
     <priority value="ALL" />
     <appender-ref ref="UdpAppender" />
     
 <!-- Varsa diğer appender yapılandırmaları-->
  </root>
</log4net>

   Benzer şekilde Chainsaw’u da 8080 portuna gönderilen UDP paketlerini dinleyecek şekilde yapılandırmanız gerekecektir. Bunun için aşağıdaki yapılandırma kullanılabilir;

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">
    <plugin name="UDPReceiver" class="org.apache.log4j.net.UDPReceiver">
       <param name="Port" value="8080" />
    </plugin>
</log4j:configuration>

   Yukarıdaki yapılandormayı bir dosyaya sakladıktan sonra Chainsaw’u başlattığınızda size log alıcı yapılandırması için seçenekler sunacaklardır;

Chainsaw log alıcısı yapılandırması

   Bu seçeneklerden “Let me search for a configuration file” seçeneğini seçerek az önce sakladığınız dosyayı seçmeniz ardından ok tuşuna basmanızla birlikte Chainsaw kendisini 8080 portundan UDP paketlerini dinleyecek şekilde ayarlayacaktır. Uygulama bu ayarlarla başlatıldığında da aşağıdaki ekran sizi karşılayacaktır.

Başarılı bir yapılandırma ardından gelen Chainsaw ekranı

 

   Başarılı bir yapılandırma ardından ekranın sağ tarafında yer alan Receivers bölümünde bir UDPReceiver girdisi görülecektir. Bu işlemler ardından artık uygulamanızı başlatabilir ve logların Chainsaw ekranında aktığını görebilirsiniz.

   Bu noktada düşülebilecek bir not; Windows işletim sisteminde Chainsaw’u başlatmakta kullandığınız chainsaw.bat dosyası java uygulamasını kullanmaktadır. Bu sebeple de bat dosyası için açılan msdos penceresini kapattığınızda Chainsaw uygulaması da sonlanacaktır. Bunun önüne geçebilmek için bat dosyasını java yerine javaw kullanılacak şekilde güncellemelisiniz. Bu sayede msdos penceresinin kapatılması uygulamayı etkilemeyecektir.

   Chainsaw uygulaması log segmesinde alt tarafta yer alan log detayları isteğe göre yapılandırılabilir şekilde tasarlanmıştır. İsterseniz bu bölümde tamamen farklı bir tasarım ile logları inceleyebilir, sadece ihtiyacınız olan bilgilerin görülmesini sağlayabilirsiniz. Bu yapılandırma için bu bölüme gelerek sağ tıklamalı ve gelen menüden edit seçeneğini seçmelisiniz.

Chainsaw pattern editör ekranı

   Loglama alışkanlığı hata ayıklamada önemli bir yapı taşıdır. İnanıyorum ki sizlerde benim gibi bir kez bu alışkanlığı edinip kolaylıklarını yaşadığınızda vazgeçemeyeceksiniz. Bu alışkanlığı edindikten sonra Chainsaw da hiç şüphesiz ki devamlı elinizin altında olacak önemli bir araç olacaktır.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

4 yorum

    • Fatih Boy   •     Yazar

      Merhaba İbrahim,
      Log2Console’u inceleme fırsatım olmuştu, alternatif bir başka uygulama da Log4net Viewer; fakat her iki ürünü Chainsaw ile kıyasladığımda bence hala Chainsaw önde 🙂
      Farklı bir alternatif olarak da Log4Net Dashboard incelenebilir; fakat ticari olan bu ürünün de Chainsaw ile birebir örtüşmediği kanısındayım.

  1. yasin   •  

    slm hocam log4net makalelerinizden çok fazlası ile yararlandım teşekkür ederim.
    Chainsaw ıda kurdum ancak şöyle bır sorum olucak programın kendinden gelen log raporları var sol taraftaki menüden nasıl kaldırabilirim onları acaba birde bunu localde değilde globalde çalıştırmak için farklı bir konfigrasyon gerekirmi yoksa statik ıp vermemiz yeterlimidir

  2. Pingback: Log Yöneticisi Log4Net

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir