İkisi için tecrübesi olan var mı? Birbirlerine karşı nasıl birikiyorlar?
Bunlardan birini kurumsal bir uygulamada oturum açmak için kullanmayı planlıyoruz.
Referanslar:
DÜZENLEME: nlog veya log4net için mevcut bağımlılığımız yok.
İkisi için tecrübesi olan var mı? Birbirlerine karşı nasıl birikiyorlar?
Bunlardan birini kurumsal bir uygulamada oturum açmak için kullanmayı planlıyoruz.
Referanslar:
DÜZENLEME: nlog veya log4net için mevcut bağımlılığımız yok.
Yanıtlar:
Kısa süre önce yaklaşmakta olan bir proje için "bazı logları prototip haline getirme" görevi verildi. Günlük kaydı deneyimi yaşamadım. Log4Net, NLog ve Enterprise Library'de birkaç gün boyunca araştırdım, dersler verdim, oyuncak uygulamaları vb. Yaptım. 3-4 hafta sonra geri döndü ve bunları uyumlu bir demoya dönüştürdü. Umarım bunlardan bazıları sizin için yararlıdır.
Projem için önerim şudur:
Bu, bu bulgulara dayanmaktadır (görüşler!):
Açıkçası NLog'u şimdiye kadar seviyorum. Yine de başka bir çözüme sahip olmasına rağmen kullanmak için yeterli değil.
Çok tartışılmayan önemli bir husus, destek ve güncellemelerdir.
Log4Net, 1.2.10 sürümü 19 Nisan 2006'da yayımlandığından beri güncellenmemiştir .
Buna karşılık, NLog 2006'dan beri aktif olarak desteklenmektedir, yakında log4net en son güncellendiğinde mevcut olmayan birçok platformu destekleyen NLog 2.0'ı piyasaya sürecektir :
Son zamanlarda her iki çerçeve ile de bir deneyim yaşadım, her çerçeve hakkındaki görüşlerimi paylaşabileceğimi düşündüm.
Mevcut bir web uygulaması için günlük çerçevelerini değerlendirmem istendi, çeşitli çevrimiçi forumlardan geçtikten sonra seçimlerimi NLog (v2.0) ve log4net'e (v1.2.11) daralttım. İşte bulgularım:
NLog ile ayarlama / başlatma çok kolaydır. Web sitelerinde Başlarken eğiticisinden geçiyorsunuz ve işlem tamam. Adil bir fikir, nlog ile nasıl bir şey olabilir. Config dosyası o kadar sezgiseldir ki herkes config'i anlayabilir. Örneğin: dahili günlüğe kaydetmeyi etkinleştirmek istiyorsanız, bayrağı Nlog yapılandırma dosyasının başlık düğümünde (beklediğiniz yerde) ayarlarsınız. Log4net'te web.config uygulamasının appSettings bölümünde farklı bayraklar ayarlarsınız.
Log4net'te, dahili günlük kaydı can sıkıcı bir zaman damgası vermez. Nlog'da, zaman damgalarıyla güzel bir günlük elde edersiniz. Değerlendirmelerimde çok yararlı buldum.
Log4net'teki filtreler - Bu soruyu kontrol etseniz iyi olur - log4net filtresi - günlük mesajlarını yoksaymak için nasıl AND yazılır ve filtre uygularsanız, bunun için bir cevap / çözüm bulursanız lütfen bize bildirin. Anlıyorum, kendi özel filtrenizi yazabileceğiniz için bu soru için bir geçici çözüm var. Ancak log4net'te kolayca bulunmayan bir şey.
Performans - Saklı yordam kullanarak veritabanına yaklaşık 3000 günlük iletisi kaydettim. Ben döngü için basit kullandım (int i = 0; i <3000; i ++ ... aynı mesajı 3000 kez günlüğe kaydetmek için yazdım. Log4net AdoAppender NLog'dan neredeyse iki kat daha fazla zaman aldı.
Log4net, eşzamansız ekleyiciyi desteklemiyor.
Günlük kaydı olarak NLog'u seçmek benim için yeterli bir karşılaştırmaydı. :)
Bu iş parçacığına geç kalanlar için .Net Base Sınıf Kütüphanesi'ne (BCL) bir göz atmak isteyebilirsiniz. TraceSource sınıfı tanıtıldığında birçok kişi .Net 1.1 ve .Net 2.0 arasındaki değişiklikleri kaçırdı (yaklaşık 2005).
TraceSource'un kullanılması, günlük kaydı, app.config / web.config dosyasında yapılandırma ve programlı erişim ile kurumsal uygulama bloğunun ek yükü olmadan diğer günlük çerçevelerine benzer.
Ayrıca etrafında yüzen bir çok karşılaştırma vardır: "log4net vs TraceSource"
Bizim için en önemli fark genel anlamda ...
Logger.IsDebugEnabled
NLog'a Log4Net'e bir göz atın , testlerimizden NLog'un daha az yükü var ve peşinde olduğumuz şey bu (düşük gecikmeli şeyler).
Şerefe, Florian
Önce yığınının geri kalanına bak.
NHibernate kullanıyorsanız, doğrudan Log4Net kullanır. Diğer çerçevelerde ihtiyaç duydukları başka belirli kaydediciler olabilir.
Bunun dışında: her ikisi de iyi çalışıyor.
Log4Net'e kendim yerleştim. Yapılandırmak bir acı olabilir ve doğru yapılandırılmamışsa neyin yanlış gittiğini anlamak bir acıdır. Ama bir kaydediciden istediğiniz her şeyi yapmasını sağlayabilirsiniz.
Log4Net ile ilgili bir sorununuz yoksa, nasıl başlayacağınız hakkında yazdığım bir makale: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Ben .. Veritabanı günlüğü görevleri için Enterprise kütüphanesini kullandım ve şimdi performans darboğazı nedeniyle NLog'a geçtim.
bazı karşılaştırma bilgileri:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Yukarıdakileri tekrarlıyorum ve nLog'u tercih ediyorum. Entlib gereksiz yere şişirilir.
Re: Log4net HER ZAMAN log4net ile beni alır bir şey bileşeni başlatmak için global.asax aşağıdaki eklemeyi unutmaktır:
log4net.Config.XmlConfigurator.Configure();
Gidersen burada sen nlog ve Log4Net kütüphaneleri yanı sıra Kurumsal Lib ve diğer ürünlerini içerir kapsamlı bir matris bulabilirsiniz.
Birisi, matrisin, matristeki mevcut tek ticari lib'in özelliklerinin altını çizecek şekilde yapıldığını iddia edebilir. Doğru olduğunu düşünüyorum ama seçimimi NLog karşı götürmek için yine de yararlı oldu.
Saygılarımızla
Fark ettiğim gibi, log4net çıktı dosyalarını uygulama çalışırken sürekli kilitler, böylece onları silemezsiniz. Aksi takdirde benzerdirler.
Bu yüzden NLog'u tercih ederim.
Çalıştığım açık kaynaklı bir proje için utanmaz fiş, ancak hangi .NET günlük kaydı çerçevesinin daha aktif olduğu hakkında canlı tartışma verildiğinde Serilog'a zorunlu bir bağlantı yayınlayacağımı düşündüm .
Bir uygulamada kullanmak için, Serilog log4net'e benzer (ve çok fazla çizer). Bununla birlikte, diğer .NET günlüğü seçeneklerinin aksine, Serilog çevrimdışı analiz için günlük olaylarının yapısını korumakla ilgilidir. Yazarken:
Log.Information("The answer is {Answer}", 42);
Çoğu günlük kitaplığı iletiyi bir dizeye dönüştürür. Serilog bunu da yapabilir, ancak { Answer: 42 }
daha sonra NoSQL veri depolarından birini kullanarak olayları değerine göre düzgün bir şekilde sorgulayabilmeniz için özelliği korur Answer
.
1.0'a yaklaştık ve tüm modern (.NET 4.5, Windows Mağazası ve Windows Phone 8) platformlarını destekliyoruz.
Ben de yönetilmeyen kod ile çalışır çünkü NLog ikinci. Log4net ve log4cxx'i birlikte kullanmak mümkün olabilir, ancak NLog hem yönetilen hem de yönetilmeyen kodu kutudan çıkarır.
Ayrıca loging api'nin soyutlamasını yapan bir cephe olan Common.Logging'e de baktım, log4net, NLog ve Entreprise Library'yi destekliyor. Bunu kullanacağımı düşünmüyorum, ancak günlük kaydı devre dışı bırakıldığında (NLog ve muhtemelen diğerleriyle paylaşılan bir özellik) performansı artırmak için lambdas'ı nasıl kullandıklarını seviyorum.
Microsoft Enterprise Library Günlük Kaydı'nı da düşünebilirsiniz . Güzel tasarımcı ile geliyor.
Deneyimlerime dayanarak, SmartInspect hem NLog hem de log4net'i atıyor.
Kullanımı son derece kolay, belgeler harika ve önceden kaydedilmiş mesajları görüntüleyebilir ve filtreleyebilirsiniz interaktif günlük görüntüleyici ile , bu da büyük bir gerçek dünya avantajıdır.
Sevdiğim bir şey, Chrome'daki tarayıcı sekmeleri gibi verilerin sekmeli görünümleridir. Her sekme günlüğün filtrelenmiş farklı bir görünümünü sağlayabilir.