Mrz 192011
 

Vor kurzem wurde ich auf eine, irgend wie coole, Geschichte für ASP.NET Anwendungen aufmerksam via dem Blog von rtur.net.  Er zeigte wie man ELMAH sehr einfach in BlogEngine.NET einbauen kann. Mit ELMAH können sehr einfach Applikationsweite Exceptions, die nicht abgefangen sind, aufgezeichnet werden. Einfach die DLL ins bin-Verzeichnis kopieren und die web.config ein wenig anpassen und schon wird tüchtig aufgezeichnet.

Zudem seht noch ein HTTP Handler zur Verfügung, elmah.axd, womit eine Liste mit allen aufgetretenen Fehler zu sehen ist.

Liste mit allen Exceptions -- ELMAH

Die Exceptions können in etlichen Datenquellen abgelegt werden. Diverse Datenbanken, XML Dateien und auch per Mail verschickt werden.

Wie baut man nun ELMAH am einfachsten in BlogEngine.NET ein?

  1. Lade NuGet runter und installiere es, sofern NuGet noch nicht installiert ist.
  2. Öffne das BlogEngine.NET Projekt mit Visual Studio 2010 und klicke im Projektexplorer rechts mit der Maus. Gehe auf “Add Library Package Reference…”.
    Add Library Package Reference…
  3. Suche nach “ELMAH” und klicke auf “Install”.
    ELMAH installieren
    Danach sieht es so aus.
    ELMAH installiert
  4. Öffne die web.config und passe sie noch ein wenig an. Einiges wird schon ergänzt. Aber wenn die Exceptions per Mail verschickt werden sollen oder in eine Datenbank geschrieben werden sollen muss noch ein wenig etwas angepasst werden.
    Infos dazu sind hier zu finden. sample web.config für ELMAH.
  5. Lade die DLL’s ins bin-Verzeichnis und die angepasste web.config auf den Webserver. Das war alles.

Mein Ziel ist es nun, alle Exceptions, die sich so ansammeln, zu beheben. Keine Ahnung was da auf mich zukommt. Ich habe auch zur Sicherheit mal die Methode Application_Error in der global.asax ausgeschalten. Wenn ich mich nicht irre behandelt diese so ziemlich alle Exceptions die sonst nirgends behandelt wurden. Die möchte ich natürlich auch in der Liste der Exceptions haben.

Den EMail-Versand habe ich zwar parametrisiert, aber zu funktionieren scheint er zur Zeit nicht. Ich weiss noch nicht wo genau das Problem liegen könnte. Aber schauen wir mal.

Ach ja. Und das nicht jeder auf die elmah.axd zugreifen kann, kann man in der web.config die Sicherheit so einstellen damit nur der angemeldete Admin auf die Seite zugriff hat.

</configSections>

<location path="elmah.axd">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

...

  5 Responses to “ELMAH – Error Logging Modules and Handlers”

Comments (5)
  1. In BlogEngine.NET sehe ich da jetzt nicht den großen Vorteil.
    Du deaktivierst die Application_Error Methode in der global und nimmst statt dessen ein zusätzliches Modul?
    Ausser der Möglichkeit die Fehler in einer SQL-DB zu speichern, sehe ich da keinen Vorteil. Die aufgezeichneten Fehler sind die selben. Zimindest kommen mir die meisten Fehler aus deinem ScreenShot sehr bekannt vor 🙂

    Servus,
    Klaus

  2. Der Screenshot ist auch nur eine kleine Zusammenfassung. Auf dem Details kommen noch VIEL mehr infos rein die du sonst nicht hast. Zudem könnte man die Fehler noch als Feed abonieren. Gelang mir aber nicht. 🙂

  3. Ich kenne zwar die Möglichkeiten des Error Handlings der BlogEngine nicht, kenne aber die Möglichkeiten von Elmah etwas. Elmah ist ein wunderbarer fall-back für unabgefangene Exceptions. Bei mir es so, dass ich log4net für das logging verwende und mit ein bißchen extra Aufwand die logs zusätzlich an log4net weiterleite.
    Es geht in diesem Beispiel imho nicht nur darum, Elmah in Blog-Engine einzubauen, sondern in irgendeine (existierende) Applikation einzubauen. Elmah kann wunderbar nachkonfiguriert werden ohne irgendeine Anpassung der Applikation. Das finde ich ungemein Praktisch.

  4. Und funktioniert bei dir die EMail benachrichtigung?

  5. Nach dem ich noch das Modul
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
    der web.config hinzugefügt habe tut nun auch das EMail. 🙂 Wunderbar.

Sorry, the comment form is closed at this time.