Jaka jest różnica między log4net a ELMAH?


108

Niektórzy używają ELMAH zamiast log4net. Co sprawia, że ​​jest lepszy?

Dowiedziałem się o ELMAH w odpowiedzi na pytanie przepełnienia stosu Jak mogę zalogować się w C #?



Teraz, gdy .net core jest na zdjęciu, czy scenariusz się zmienia? (elmah nie obsługuje .net core od stycznia 2018).
Chaitanya Gadkari,

Odpowiedzi:


92

ELMAH służy do śledzenia błędów i wyjątków dla aplikacji internetowych i umożliwia łatwe rejestrowanie lub przeglądanie tych wyjątków za pośrednictwem wielu różnych mechanizmów (SQL, RSS, Twitter, pliki, e-mail itp.). Jeśli nie masz wbudowanej obsługi wyjątków, ELMAH najprawdopodobniej dostaniesz to, czego szukasz pod względem obsługi wyjątków w środowisku aplikacji internetowych.

Log4net może być również używany do rejestrowania wyjątków, jednak może być konieczne zainstalowanie własnych programów obsługi, aby podłączyć je do aplikacji internetowej. Log4net będzie świecić ponad ELMAH, jeśli potrzebujesz innego rodzaju rejestrowania informacji, ponieważ log4net jest platformą rejestrowania ogólnego przeznaczenia. Log4net może być również używany w prawie każdej aplikacji .NET.


3
log4net zapewnia większą kontrolę.
DarthVader

6
Możesz uzyskać to, co najlepsze z obu światów, używając tego aplikacji ELMAH Appender dla log4net. Po prostu zarejestruj to, co lubisz (debugowanie, informacje, ostrzeżenie, błąd) za pomocą log4net, ale przechowuj to w ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

Log4Net to platforma rejestrowania ogólnego przeznaczenia z interfejsem API przeznaczonym do użycia w Twojej aplikacji (WWW, konsola, dll itp.).

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 to dyskretna wtyczka IIS przeznaczona specjalnie do rejestrowania wyjątków w aplikacji internetowej. Nie zobaczysz odniesienia do ELMAH w swojej aplikacji, nie ma ona interfejsu API, z którym korzystasz. Używa modułów i punktów rozszerzeń usług IIS obsługi w celu ograniczenia zachowania. Ponadto ma interfejs sieciowy do przeglądania błędów, które wystąpiły w aplikacji internetowej. Log4Net nie ma front-endu, tylko różnorodne ujścia dzienników (Appenders), które mogą wysyłać komunikaty dziennika do takich plików, jak pliki dziennika, serwer syslog, baza danych itp.


23
Jedna poprawka: Elmah ma interfejs API, z którym programista może wchodzić w interakcje. Na przykład sygnalizacja jest uzyskiwana za pośrednictwem Elmah Api.
Ed DeGagne

8
Kolejna korekta? ELMAH to HttpModule / HttpHandler .NET. NIE jest to wtyczka IIS. ARR to wtyczka. Nie ELMAH.
Maxime Rouiller

Jaka jest Twoja odpowiedź na komentarze?
Peter Mortensen

36

Kluczowa różnica polega na tym, że ELMAH rejestruje nieobsłużone wyjątki aplikacji; log4net rejestruje wszystko, co mu powiesz. Możesz skonfigurować log4net do rejestrowania nieobsłużonych wyjątków, ale ELMAH przechwytuje bogactwo przydatnych informacji po wyjęciu z pudełka.


1
ELMAH przechwytuje wiele przydatnych informacji po wyjęciu z pudełka, jeśli odpowiednio skonfigurujesz. przez ten sam czas możesz zrobić to samo z log4net z większą kontrolą.
DarthVader

DarthVader - czy masz przykładową konfigurację log4net, która robi to samo?
JasonD

5
ELMAH przechwytuje bogactwo przydatnych informacji po wyjęciu z pudełka bez konfiguracji. Dzięki dodatkowej konfiguracji będzie obsługiwał zarówno nieobsługiwane wyjątki, jak i obsługiwane wyjątki.
Trevor de Koekkoek,

5

ELMAH działa, tworząc moduł HTTP, który łączy się ze zdarzeniami błędów, a następnie rejestruje. Można to łatwo udaremnić i zepsuć przez zły projekt. Log4Net może wymagać dodatkowej pracy z góry, ale jeśli używasz struktury AOP i zastosujesz ją w swojej klasie lub nawet w zestawie, możesz osiągnąć znacznie lepsze rejestrowanie wyjątków przy niewielkim nakładzie kodu i wysiłku.

ELMAH działa tylko wtedy, gdy ma dostęp do HttpContext, co może być trudne do osiągnięcia w usługach WCF. Więc mimo wszystko użyjesz innego rejestratora w WCF. Dlaczego nie skorzystać z jednego rozwiązania, które jest bardziej uniwersalne.



1

ELMAH jest specjalnie używany do aplikacji internetowych, podczas gdy log4net jest używany zarówno w aplikacjach internetowych, jak i Windows. ELMAH ma znacznie więcej zalet niż log4net w aplikacji internetowej.


5
Jakie to zalety? Wkrótce zrobię ASP.NET, więc chciałbym poznać Twoją wykształconą opinię. Wciąż jestem początkującym w .NET, więc trudniej jest mi zinterpretować to, co mówią na ich stronach.
IAdapter,

Możesz przeglądać raporty nawet bez pisania kodu. Zobacz funkcje elmah tutaj code.google.com/p/elmah
Adeel,

Elmah jest bardzo ograniczona, a jedyną „zaletą” są raporty, ale ogranicza się do aplikacji internetowych, które mają dostęp do HttpContext. Możesz mieć inne rejestratory danych do wielu innych źródeł, które mogą być raportowane.
Dustin Davis,

0

ELMAH jest bardzo potężny, ale także bardzo specyficzny w tym, co robi. Wykonuje dużo pracy za Ciebie, podczas gdy uważam, że Log4Net wymaga od Ciebie obsługi błędów i rejestrowania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.