Einige Leute verwenden ELMAH anstelle von log4net. Was macht es besser?
Ich habe in einer Antwort auf die Frage zum Stapelüberlauf von ELMAH erfahren. Wie melde ich mich in C # an?
Einige Leute verwenden ELMAH anstelle von log4net. Was macht es besser?
Ich habe in einer Antwort auf die Frage zum Stapelüberlauf von ELMAH erfahren. Wie melde ich mich in C # an?
Antworten:
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.
quelle
Log4Net ist ein universelles Protokollierungsframework mit einer API, die in Ihrer Anwendung (Web, Konsole, DLL usw.) verwendet werden soll.
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.
quelle
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.
quelle
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?
quelle
ELMAH:
Log4net:
Internetanwendung
Windows-Anwendung
Zusätzliche Referenzen: ref_1 ref_2
quelle
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.
quelle
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.
quelle