Log4Net UDPAppender’ı ve ipv6

     Bir süredir kişisel bilgisayarımda Windows 7’yi kullanıyorum; fakat bu bilgisayarda aktif olarak geliştirme yapmadığımdan kullandığım kütüphanelerdeki bazı problemleri farketmemişim.

    Yazdığım yazılımlarda her zaman için loglama yaparım, java ile yazılım geliştirirken log4j ile edindiğim, ardından .Net’te log4net ile devam ettiğim bir alışkanlık. Gerek yazılımı geliştirirken, gerekse de son kullanıcıda debug konusunda çok büyük faydalarını gördüm. Son kullanıcı için loglarımı dosya sistemine yazmak, ya da kritik olanları web servislere göndermek en rahatı; ama geliştirme ortamında devamlı açıp log dosyasına bakmak sıkıntılı bir süreç oluyor. Tail tarzı uygulamalarla dosyaya ekleme oldukça görmek sağlanabilse de benim tercihim daha ‘şık’ bir çözümden yana olacak; UDPAppender.
    
    Şimdiye kadar geliştirme ortamında UDPAppender ile hıç sıkıntı yaşamamıştım; Windows 7 üzerinde denemelerime kadar… Windows XP üzerinde hiç bir sıkıntı yaratmadan çalışan ve udp üzerinden logları ileten programım Windows 7’de aynı şekilde çalışmamaya başladı. Konuyu log4net forumlarında araştırınca başkalarının da benzer sıkıntılarla karşılaştığını gördüm. Sıkıntının kaynağında XP’den farklı olarak Windows 7’nin ipv4’e ek olarak verdiği ipv6 desteği gösteriliyor. Öneriler arasında 127.0.0.1 olarak localhost’a log gönderecek şekilde aşağıdaki örnekte olduğu gibi ayarlanmış yapılandırmanın ip adresi 127.0.0.2 kullanılacak şekilde değiştirilmesi vardı.

<appender name="UdpAppender" type="log4net.Appender.UdpAppender">
    <remoteAddress value="127.0.0.1"/>
    <remotePort value="8080"/>
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">

      <locationInfo value="true"/>
    </layout>
</appender>

Gerçekten da yapılandırmayı tavsiye edildiği şekilde aşağıdaki gibi değiştirince yeniden logları görmeye başladım; fakat bunun yerine log4net kodlarında yapılacak bir güncelleme daha iyi olurdu.

<appender name="UdpAppender" type="log4net.Appender.UdpAppender">

    <remoteAddress value="127.0.0.2"/>
    <remotePort value="8080"/>
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      <locationInfo value="true"/>

    </layout>
</appender>

Bu problem log4net jira’sında 112 bildirim numarası ile iletilmiş : https://issues.apache.org/jira/browse/LOG4NET-112 . Gelen yorumlarda bir kaç work-around olsa da yine de en doğrusu işi log4net repository’sinde çözmekteki; ki UdpAppender.cs dosyası içinde yapılan 506603 nolu revizyon (https://svn.apache.org/viewvc/logging/log4net/trunk/src/Appender/UdpAppender.cs?revision=506603) sonrası problem çözülmüş görülüyor.

Benzer bir problemi sizde yaşadıysanız, tavsiyem log4net’in güncel kaynak kodu üzerinde bu değişikliği yapmanız ve ardından derlenen dll’i kullanmanız.

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+

Bir Cevap Yazın

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