it-swarm.com.de

Was ist der Unterschied zwischen log4net und ELMAH?

Einige Leute benutzen ELMAH anstelle von log4net. Was macht es besser?

Ich habe in Eine Antwort auf die Frage zum Stapelüberlauf Wie melde ich mich in C # an?

106
IAdapter

ELMAH dient der Verfolgung von Fehlern und Ausnahmen für Ihre Webanwendungen und ermöglicht Ihnen das einfache Protokollieren oder Anzeigen dieser Ausnahmen über viele verschiedene Mechanismen (SQL, RSS, Twitter, Dateien, E-Mail usw.). Wenn Sie über keine integrierte Ausnahmebehandlung verfügen, werden Sie mit ELMAH höchstwahrscheinlich das bekommen, wonach Sie in Bezug auf die Ausnahmebehandlung in einer Webanwendungsumgebung suchen.

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

89
Mark Coleman

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

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");

ELMAHist ein unauffälliges Plugin IIS, das speziell zum Protokollieren von Ausnahmen in einer Webanwendung dient. In Ihrer Anwendung wird kein Verweis auf ELMAH angezeigt. Es gibt keine API, mit der Sie interagieren. Es verwendet die Erweiterungspunkte von Modul und Handler IIS, um das Verhalten zu verankern. Darüber hinaus verfügt es über ein Web-Frontend, um die Fehler anzuzeigen, die in Ihrer Webanwendung aufgetreten sind. Log4Net hat kein Front-End, nur eine Reihe von Protokollsenken (Appenders), mit denen Sie Ihre Protokollnachrichten an Protokolldateien, einen Syslog-Server, eine Datenbank usw. senden können.

111
Mike Valenty

Der Hauptunterschied besteht darin, dass ELMAH nicht behandelte Anwendungsausnahmen protokolliert. log4net protokolliert, was immer Sie zur Protokollierung sagen. Sie können log4net so konfigurieren, dass nicht behandelte Ausnahmen protokolliert werden. ELMAH erfasst jedoch eine Vielzahl nützlicher Informationen.

35
Jamie Ide

ELMAH erstellt ein http-Modul, das sich in Fehlerereignisse einfügt und dann protokolliert. Dies kann durch schlechtes Design leicht durchkreuzt und gebrochen werden. Log4Net erfordert möglicherweise im Vorfeld zusätzliche Arbeit, aber wenn Sie ein AOP-Framework verwenden und es in Ihrer Klasse oder sogar in der Assembly anwenden, können Sie mit sehr wenig Code und Aufwand eine weitaus bessere Ausnahmelogistik erzielen.

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

5
Dustin Davis

ELMAH:

  • Internetanwendung

Log4net:

  • Internetanwendung

  • Windows-Anwendung

Zusätzliche Referenzen: ref_1ref_2

4
sgokhales

ELMAHwird speziell für Webanwendungen verwendet, während log4net in Web- und Windows-Anwendungen verwendet wird. ELMAH hat weit mehr Vorteile als log4net in einer Webanwendung.

1
Adeel

ELMAH ist sehr mächtig, aber auch sehr spezifisch. Es erledigt eine Menge Arbeit für Sie, während Log4Net meiner Meinung nach Sie für die Fehlerbehandlung und Protokollierung benötigt.

0
Dean Thomas