Log4net ve ELMAH arasındaki fark nedir?


Yanıtlar:


92

ELMAH, web uygulamalarınız için hataları ve istisnaları izleme amacına hizmet eder ve bu istisnaları birçok farklı mekanizma (SQL, RSS, Twitter, dosyalar, e-posta vb.) Aracılığıyla kolayca kaydetmenize veya görüntülemenize olanak tanır. Yerleşik istisna işlemeye sahip değilseniz ELMAH, büyük olasılıkla bir web uygulaması ortamında istisna işleme açısından aradığınız şeyi size verecektir.

Log4net, istisna kaydı için de kullanılabilir, ancak web uygulamanıza bağlanmak için kendi işleyicilerinizi yuvarlamanız gerekebilir. Log4net genel amaçlı bir günlükleme çerçevesi olduğundan, başka türden bilgi günlük kaydı yapmanız gerekirse, Log4net ELMAH üzerinde parlayacaktır. Log4net hemen hemen her .NET uygulamasında da kullanılabilir.


3
log4net size daha fazla kontrol sağlar.
DarthVader 01

6
Log4net için bu ELMAH Appender'ı kullanarak her iki dünyanın da en iyisini elde edebilirsiniz. Sadece ne sen gibi (ayıklama, bilgi, hata uyar) log4net ile ancak ELMAH depolamak log nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

Log4Net , uygulamanızda (web, konsol, dll, vb.) Kullanılması amaçlanan bir API ile genel amaçlı bir günlükleme çerçevesidir.

logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");

ELMAH , özellikle bir web uygulamasındaki istisnaları günlüğe kaydetmek için göze çarpmayan bir IIS eklentisidir . Uygulamanızda ELMAH için bir referans görmezsiniz, etkileşimde bulunduğunuz bir API'ye sahip değildir. Davranışta cıvatalamak için modül ve işleyici IIS uzantı noktalarını kullanır. Ayrıca, web uygulamanızda meydana gelen hataları görüntülemek için bir web ön ucuna sahiptir. Log4Net'in bir ön ucu yoktur, yalnızca günlük mesajlarınızı günlük dosyaları, sistem günlüğü sunucusu, veritabanı vb. Gibi şeylere gönderebilen çeşitli günlük havuzları (Ekleyiciler) vardır.


23
Bir düzeltme, Elmah'ın geliştiricinin etkileşime girebileceği bir API'si var. Örneğin, sinyalizasyon Elmah Api aracılığıyla sağlanır.
Ed DeGagne

8
Başka bir düzeltme mi? ELMAH bir .NET HttpModule / HttpHandler'dır. Bir IIS eklentisi DEĞİLDİR. ARR bir eklentidir. ELMAH değil.
Maxime Rouiller

Yorumlara cevabınız nedir?
Peter Mortensen

36

Temel fark, ELMAH'ın işlenmemiş uygulama istisnalarını günlüğe kaydetmesidir; log4net günlüğe kaydetmesini söylediğiniz her şeyi günlüğe kaydeder. Log4net'i işlenmemiş istisnaları günlüğe kaydedecek şekilde yapılandırabilirsiniz, ancak ELMAH kutunun dışında çok sayıda yararlı bilgiyi yakalar.


1
Doğru şekilde yapılandırırsanız, ELMAH kutudan çıkar çıkmaz çok sayıda yararlı bilgiyi yakalar. Aynı süre için, log4net ile daha fazla denetimle aynısını yapabilirsiniz.
DarthVader 01

DarthVader - aynı şeyi yapan örnek bir log4net yapılandırmanız var mı?
JasonD

5
ELMAH, NO yapılandırması ile kutudan çıkar çıkmaz çok sayıda yararlı bilgiyi yakalar. Ekstra yapılandırma ile hem işlenmeyen istisnaları hem de işlenen istisnaları ele alır.
Trevor de Koekkoek

5

ELMAH, hata olaylarına bağlanan ve ardından günlük kaydı yapan bir HTTP modülü oluşturarak çalışır. Bu, kötü tasarım nedeniyle kolayca engellenebilir ve kırılabilir. Log4Net önceden ek çalışma gerektirebilir, ancak bir AOP çerçevesi kullanırsanız ve bunu sınıfınıza veya hatta derlemenize uygularsanız, çok az kod ve çabayla çok daha iyi istisna günlüğü elde edebilirsiniz.

ELMAH yalnızca, WCF hizmetlerinde elde edilmesi zor olabilen HttpContext'e erişimi varsa çalışır. Böylece, yine de WCF'de başka bir kaydedici kullanırsınız. Neden daha evrensel olan tek bir çözümü kullanmıyorsunuz?



1

ELMAH , özellikle web uygulamaları için kullanılırken, log4net hem web hem de Windows uygulamalarında kullanılır. ELMAH, bir web uygulamasında log4net'ten çok daha fazla avantaja sahiptir.


5
Bu avantajlar nelerdir? Yakında ASP.NET yapacağım, bu yüzden eğitimli fikirlerinizi bilmek istiyorum. Hala .NET kullanmaya başladım, bu yüzden sitelerinde söylediklerini yorumlamak benim için daha zor.
IAdapter

Raporları herhangi bir kod yazmadan bile görüntüleyebilirsiniz. Elmah özelliklerini burada görün code.google.com/p/elmah
Adeel

Elmah çok sınırlıdır ve tek "avantaj" raporlardır, ancak HttpContext'e erişimi olan web uygulamalarıyla sınırlıdır. Başka kaydedicilerin rapor verilebilecek diğer birçok kaynak için günlük verilerini alabilirsiniz.
Dustin Davis

0

ELMAH çok güçlü, ama aynı zamanda yaptığı şeyde çok özel. Ben Log4Net gerektirir inanıyorum iken, sizin için bir sürü iş yapar sizi hata işleme ve günlüğünü yapmak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.