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 #?
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 #?
Odpowiedzi:
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.
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.
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.
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.
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.
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.