Was ist der Unterschied zwischen log4net und ELMAH?

Antworten:

92

ELMAH dient dazu, Fehler und Ausnahmen für Ihre Webanwendungen zu verfolgen, und ermöglicht es Ihnen, diese Ausnahmen über viele verschiedene Mechanismen (SQL, RSS, Twitter, Dateien, E-Mail usw.) einfach zu protokollieren oder anzuzeigen. Wenn Sie keine integrierte Ausnahmebehandlung haben, wird ELMAH Ihnen höchstwahrscheinlich das bieten, wonach Sie in Bezug auf die Ausnahmebehandlung in einer Webanwendungsumgebung suchen.

Log4net kann auch für die Ausnahmeprotokollierung verwendet werden. Möglicherweise müssen Sie jedoch Ihre eigenen Handler rollen, um eine Verbindung zu Ihrer Webanwendung herzustellen. Log4net leuchtet über ELMAH, wenn Sie andere Arten der Informationsprotokollierung durchführen müssen, da log4net ein universelles Protokollierungsframework ist. Log4net kann auch in fast jeder .NET-Anwendung verwendet werden.

Mark Coleman
quelle
3
log4net gibt Ihnen mehr Kontrolle.
DarthVader
6
Mit diesem ELMAH Appender für log4net können Sie das Beste aus beiden Welten herausholen. Protokollieren Sie einfach, was Sie möchten (Debug, Info, Warnung, Fehler) mit log4net, aber speichern Sie es in ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla
111

Log4Net ist ein universelles Protokollierungsframework mit einer API, die in Ihrer Anwendung (Web, Konsole, DLL usw.) verwendet werden soll.

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 ist ein unauffälliges IIS-Plugin speziell zum Protokollieren von Ausnahmen in einer Webanwendung. In Ihrer Anwendung wird kein Verweis auf ELMAH angezeigt. Es gibt keine API, mit der Sie interagieren. Es verwendet die Modul- und Handler-IIS-Erweiterungspunkte, um das Verhalten zu verbessern. Darüber hinaus verfügt es über ein Web-Front-End, um die in Ihrer Webanwendung aufgetretenen Fehler anzuzeigen. Log4Net verfügt nicht über ein Front-End, sondern nur über eine Vielzahl von Protokollsenken (Appendern), mit denen Sie Ihre Protokollnachrichten an Protokolldateien, einen Syslog-Server, eine Datenbank usw. senden können.

Mike Valenty
quelle
23
Eine Korrektur, Elmah hat eine API, mit der der Entwickler interagieren kann. Zum Beispiel wird die Signalisierung durch die Elmah Api erreicht.
Ed DeGagne
8
Noch eine Korrektur? ELMAH ist ein .NET HttpModule / HttpHandler. Es ist KEIN IIS-Plugin. ARR ist ein Plugin. Nicht ELMAH.
Maxime Rouiller
Wie ist Ihre Antwort auf die Kommentare?
Peter Mortensen
36

Der Hauptunterschied besteht darin, dass ELMAH nicht behandelte Anwendungsausnahmen protokolliert. log4net protokolliert alles, was Sie ihm zum Protokollieren sagen. Sie können log4net so konfigurieren, dass nicht behandelte Ausnahmen protokolliert werden. ELMAH erfasst jedoch sofort eine Fülle nützlicher Informationen.

Jamie Ide
quelle
1
ELMAH erfasst eine Vielzahl nützlicher Informationen sofort, wenn Sie sie richtig konfigurieren. Für die gleiche Zeit können Sie dasselbe mit log4net mit mehr Kontrolle tun.
DarthVader
DarthVader - Haben Sie eine log4net-Beispielkonfiguration, die dasselbe tut?
JasonD
5
ELMAH erfasst eine Fülle nützlicher Informationen sofort ohne Konfiguration. Mit der zusätzlichen Konfiguration werden sowohl nicht behandelte als auch behandelte Ausnahmen behandelt.
Trevor de Koekkoek
5

ELMAH erstellt ein HTTP-Modul, das sich in Fehlerereignisse einbindet und anschließend protokolliert. Dies kann leicht durch schlechtes Design vereitelt und gebrochen werden. Log4Net erfordert möglicherweise zusätzliche Arbeit im Voraus. Wenn Sie jedoch ein AOP-Framework verwenden und es auf Ihre Klasse oder sogar die Assembly anwenden, können Sie mit sehr wenig Code und Aufwand eine weitaus bessere Ausnahmeprotokollierung erzielen.

ELMAH funktioniert nur, wenn es Zugriff auf HttpContext hat, was in WCF-Diensten schwer zu erreichen sein kann. Sie würden also sowieso einen anderen Logger in WCF verwenden. Warum nicht einfach eine Lösung verwenden, die universeller ist?

Dustin Davis
quelle
4

ELMAH:

  • Internetanwendung

Log4net:

  • Internetanwendung

  • Windows-Anwendung

Zusätzliche Referenzen: ref_1 ref_2

sgokhales
quelle
1

ELMAH wird speziell für Webanwendungen verwendet, während log4net sowohl für Web- als auch für Windows-Anwendungen verwendet wird. ELMAH bietet in einer Webanwendung viel mehr Vorteile als log4net.

Adeel
quelle
5
Was sind diese Vorteile? Ich werde bald ASP.NET machen, daher würde ich gerne Ihre fundierte Meinung erfahren. Ich bin noch Anfänger in .NET, daher ist es für mich schwieriger zu interpretieren, was sie auf ihren Websites sagen.
IAdapter
Sie können Berichte auch ohne Code anzeigen. Siehe elmah Funktionen hier code.google.com/p/elmah
Adeel
Elmah ist sehr begrenzt und der einzige "Vorteil" sind die Berichte, aber es ist auf Web-Apps beschränkt, die Zugriff auf HttpContext haben. Andere Protokollierer können Daten in vielen anderen Quellen protokollieren, über die berichtet werden kann.
Dustin Davis
0

ELMAH ist sehr mächtig, aber auch sehr spezifisch in dem, was es tut. Es macht eine Menge Arbeit für Sie, während ich glaube , Log4Net erfordert Sie die Fehlerbehandlung und die Protokollierung zu tun.

Dean Thomas
quelle