Frage

Ich bin auf der Suche für den besten Weg, um Fehler zu protokollieren, die in einer ASP.NET Anwendung.Ich möchte in der Lage sein, E-Mails erhalten, wenn Fehler auftreten, die in meiner Anwendung, die detaillierte Informationen über die Ausnahme und die aktuelle Anfrage zu verwenden.

In meiner Firma, wir haben unseren eigenen ErrorMailer, fangen alles, was in der Globalen.asax Application_Error.Es war "Ok" aber nicht sehr flexibel und konfigurierbar.

Wir wechselten kürzlich zum NLog.Es ist viel mehr konfigurierbar, können wir definieren verschiedener Ziele für die Fehler, die filter -, Puffer-Sie (noch nicht ausprobiert).Es ist eine sehr gute Verbesserung.

Aber ich entdeckte kürzlich, dass es eine ganze Namespace in .Net framework für diesen Zweck : System.Web.Management und es kann konfiguriert werden, in der healthMonitoring Abschnitt von web.config.

Haben Sie jemals gearbeitet .Net health monitoring?Was ist Ihre Lösung für error logging?

War es hilfreich?

Lösung

Ich benutze elmah.Es hat einige wirklich nette features, und hier ist eine CodeProject Artikel auf es.Ich denke der StackOverflow-team verwendet elmah auch!

Andere Tipps

Ich habe mit Log4net, konfiguriert, um E-Mail-details fataler Fehler.Es ist auch so einrichten, anmelden, alles in einer log-Datei, die von unschätzbarem Wert ist, wenn Sie versuchen zu Debuggen Probleme.Der andere Vorteil ist, dass, wenn die standard-Funktionalität nicht tun, was Sie wollen es zu, es ist ziemlich einfach zu schreiben, einen benutzerdefinierten appender, die Bearbeitung der Anmeldung die erforderlichen Angaben ein.

Having said, die, ich bin mit diesem in tandem mit eine benutzerdefinierte Fehlerbehandlung sendet eine html-E-Mail mit ein bisschen mehr Informationen als im standard enthalten ist, log4net E-Mails - Seite, session-Variablen, cookies, http-server-Variablen, etc.

Diese werden sowohl WLAN bis in die Application_OnError Ereignis, wo die Ausnahme protokolliert wird eine schwerwiegende Ausnahme in log4net (die dann bewirkt, dass es werden, per E-Mail an eine angegebene E-Mail-Adresse), und auch direkt über die benutzerdefinierte Fehlerbehandlung.

Zum ersten mal hörte über Elmah aus dem Coding Horror blog-Eintrag, Crash Verantwortungsbewusst, und obwohl es vielversprechend aussieht, ich bin noch zu implementieren it-Projekte.

Ich habe mit der Enterprise Library Logging-Objekte.Es ermöglicht Ihnen, verschiedene Arten von logging (flat file -, e-mail-und/oder Datenbank).Es ist ziemlich anpassbar und hat eine ziemlich gute Schnittstelle für die Aktualisierung Ihrer Website.config für die Konfiguration der Protokollierung.In der Regel rufe ich meine Anmeldung von der Auf Fehler in der Globalen.asax.

Hier ist ein link zur MSDN

Ich benutze log4net und wo immer ich erwarten eine Ausnahme habe ich die Aufzeichnung auf der entsprechenden Ebene.Ich Neige dazu, nicht zu re-throw the exception, weil es nicht wirklich zulassen, so-nice user experience, die es gibt weniger Informationen, die Sie bereitstellen können, auf dem aktuellen Stand.

Ich werde Application_Error auch so konfiguriert zu fangen jede Ausnahme, die nicht erwartet wurde und der Fehler wird protokolliert, wie eine Tödliche Priorität durch log4net (gut, 404 s sind erkannt und geloggt als Info, da Sie nicht, dass hoher Schweregrad).

Mein team verwendet log4net von Apache.Es ist ziemlich leicht und einfach setup.Am besten von allen, es ist vollständig konfigurierbar, aus dem web.config-Datei, so dass, sobald Sie haben die Haken in Ihre code-setup, können Sie völlig ändern Sie die Art und Weise der Protokollierung erfolgt nur durch ändern der web.config-Datei.

log4net-Protokollierung unterstützt eine Vielzahl von Orten -, Datenbank -, E-Mail, text-Datei, Windows-Ereignisprotokoll, etc.Mein team hat es so konfiguriert, dass Sie detaillierte Fehler-Informationen an eine Datenbank, und auch senden eine E-Mail an das gesamte team, mit genügend Informationen für uns zu bestimmen, in welchem Teil des Codes der Fehler aufgetreten ist.Dann werden wir wissen, wer verantwortlich ist für das Stück code, und gehen Sie zu der Datenbank, um detailliertere Informationen zu erhalten.

Ich habe vor kurzem gebaut ein asp.net webservice mit NLog, die ich für alle meine desktop-apps.Die Anmeldung funktioniert gut, wenn ich bin-debugging in Visual Studio, aber sobald ich den Schalter auf IIS-log-Datei nicht angelegt;Ich habe noch nicht festgestellt, warum, aber die Tatsache, dass ich brauche eine Lösung zu suchen, macht mich wollen, um zu versuchen, etwas anderes für mein asp.net muss!

Wir verwenden EnterpriseLibrary.ExceptionHandling.Die Protokollierung.Ich mag es, ein bisschen besser als log4net da wir nicht nur die Kontrolle der Protokollierung vollständig, aber wir können Steuern, die Werfen/NoThrow Entscheidung innerhalb config als gut.

Wir verwenden eine benutzerdefinierte homegrown Protokollierung util schrieben wir.Es erfordert, dass Sie die Protokollierung implementieren, die auf Ihre eigenen überall Sie es brauchen.Aber, es ermöglicht auch das erfassen viel mehr als nur die Ausnahme.

Für Beispiel unser code würde wie folgt Aussehen:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

Auf diese Weise unsere Datenlogger, schreiben Sie alle Infos, die wir brauchen, um eine SQL-Datenbank.Wir haben E-Mail-Benachrichtigungen an den DB-Pegel zu suchen, die für bestimmte Fehler oder Häufig auftretenden Fehler.Es hilft uns zu identifizieren, wo genau der Fehler kommt.

Dies ist möglicherweise nicht genau das, was Sie suchen.Ein anderer Ansatz ist vergleichbar mit der Verwendung von Global.asax ist für uns ein code-injection-Technik wie AOP mit PostSharp.Dies ermöglicht Ihnen, injizieren Sie benutzerdefinierten code am Anfang und Ende jeder Methode oder auf jede Ausnahme.Es ist ein interessanter Ansatz, aber ich glaube, es kann eine schwere performance-overhead.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top