HowTo: Elmah in ASP.NET MVC (& IIS7) fürs Errorlogging
Ich habe bereits mehrfach über Errorlogging (und Logging im Allgemeinen) geschrieben, jedoch habe ich heute in einem ASP.NET MVC Projekt eine nette Open Source Library eingebaut: ELMAH – Error Logging Modules and Handlers for ASP.NET.
Was kann ELMAH?
Jeder ASP.NET Entwickler wird bereits einmal den Yellow Screen of Death gesehen haben:
Meistens tritt es dann auf, wenn der Kunde die Webseite ansieht und man selber schwer nachvollziehen kann, was nun eigentlich der Fehler war.
Mit ELMAH können unbehandelte Exceptions sehr leicht geloggt (als XML, in Oracle/MSSQL/… werden und die Entwickler können ebenfalls benachrichtigt werden (Via Email oder Twitter
).
Desweiteren steht eine RSS Ansicht der Fehler zur Verfügung.
Scott Hanselman hat in seinem Blog auch eine gute Zusammenfassung geschrieben.
Wie bindet man ELMAH in ASP.NET MVC ein?
Kurz gesagt: Die DLL runterladen, die Web.config anpassen & das Routing ändern. Die längere Version steht hier Schritt für Schritt auch auf der Projektseite:
http://code.google.com/p/elmah/wiki/MVC
Wenn man es im IIS7 hosted sollte man neben den system.web Einstellungen ebenfalls die system.webServer Einstellungen editieren und dort ebenfalls die Handler & Module hinzufügen.
HandleError Attribut
ASP.NET MVC hat ein HandleError Attribut, welches bei einer unbehandelten Exception zum Zuge kommt. Um auch hier ELMAH zu integrieren, überschreibt man einfach die OnException Methode wie hier vorgeschlagen:
How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?
Ergebnis
Nach wenigen Minuten hat man nun unter http://server/elmah.axd eine übersichtliche Liste der aufgetretenen Exceptions mit unzähligen weiteren Möglichkeiten.
Download
ELMAH kann hier runtergeladen werden. Mein Beispielcode kann hier runtergeladen werden.







Daniel
9. June 2009
Wirklich toller Tipp.
Wie Scott H. schon schrieb: “ELMAH is one of those largely unknown and deeply awesome .NET Open Source projects that should be part of ASP.NET proper.”
Dank dir ist es jetzt wieder ein wenig weniger unbekannt
Daniel
9. June 2009
Argh. So schön es lokal auch läuft, auf dem IIS7-Produktivsystem bekomme ich es remote nicht abrufbar…
Module und Handler habe ich mit in die system.webServer aufgenommen, funktioniert lokal einwandfrei. Nur Remote bekomme ich einen 403 (beim Aufrufen der .axd)…
Daniel
9. July 2009
Jetzt geht’s. Wichtig war noch folgendes in die web.config einzutragen:
(steht übrigens auch auf http://code.google.com/p/elmah/wiki/SecuringErrorLogPages :-/ )
Honey Gussler
2. February 2011
Generally I do not learn post on blogs, but I would like to say that this write-up very pressured me to try and do so! Your writing taste has been amazed me. Thank you, quite nice post.