Ich bin auf eine neue asp.net-Website in 3.5, die absolut keine Fehlerbehandlung oder Protokollierung hat. Was sind einige gute Möglichkeiten für die Protokollierung und Behandlung von Fehlern? Ich habe Log4Net für das 1.1-Framework verwendet, höre aber, dass es in 3.5 potenziell bessere Optionen gibt.ASP.NET-Protokollierung - log4net oder Zustandsüberwachung?
Antwort
Eine Option ist ELMAH. Ich habe hier eine Frage dazu gestellt: ASP.NET Error Handling.
Seitdem habe ich eine leicht modifizierte Version davon implementiert und die Protokollierung plus E-Mail ist großartig und einfach über die Datei web.config zu integrieren.
Enterprise Library vielleicht hat eine Lernkurve, aber ist ein gutes Projekt.
In Asp.Net folgen david Haydens Artikel Enterprise Library 2.0 Logging Application Block
Wenn Sie log4net verwendet werden, um, mit dem, was Sie wissen. Es ist einfach, schnell und funktioniert gut. Ich habe es seit Jahren in 1.1, 2.0 und jetzt 3.5 verwendet.
ASP.NET Health Monitoring leistet wirklich einen ziemlich anständigen Job direkt aus der Box!
MSDN, How to: Send E-mail for Health Monitoring Notifications
persönlich habe, habe ich versucht log4net aber die Spezifikationen und Beispiele für WinForms gesehen, aber meine Organisation codiert eigenen Logging-Mechanismus, die Berichte und Fehler protokollieren, die in der global.asax gefangen sind, dass alles, was wir brauchen Berichte Informationen über Stack-Trace, Sitzung (falls vorhanden), NVC des Formulars, Version der App, URL, die den Fehler mit Querystring verursacht hat, und HTTP-Header. Obwohl ich bemerkt habe, dass nicht alle Fehler dort protokolliert werden; Dies ist beispielsweise der Ablauf der Formularauthentifizierung oder das Neustarten/Herunterfahren des Anwendungspools oder alles, was von IIS gemeldet wurde und nicht von der Anwendung ausgelöst wurde.
Wir verwenden zwei Möglichkeiten für unsere Protokollierung: -
ELMAH für unerwartete Ausnahme
NLog für erwartete, Handbuch (debug, info und Fehler) den Umgang mit Informationen.
ELMAH ist ein großartiges Out-of-the-Box-Plugin, das automatisch Ausnahmen (von 404 (Seite nicht gefunden) bis 500 Ausnahmefehler) erfasst und über ein integriertes Web-Interface verfügt, um diese Fehler zu visualisieren. Es ist also eine sehr schnelle und effektive Methode, um unerwartete Fehler zu erfassen.
Jetzt NLogKomplimente diese fügen unsere Entwickler manuell, indem an bestimmten Stellen Informationen in den Code debuggen, so dass, wenn wir Informationen aus einem nicht-locahost System bekommen müssen, ist es sehr einfach. Zum Beispiel wir log.Debug(..)
Code in den meisten unserer Methoden zu sehen, was die lokalen Variablen sind oder Werte zurückgegeben, etc. Für wichtigere Informationen verwenden wir dann log.Info(..)
.. aber verwenden Sie diese viel weniger. Schließlich verwenden wir log.Error(..)
oder log.Warn(..)
für schwerwiegende Fehler, die wir gefangen haben und handhaben, in der Regel innerhalb einiger try/catch
Bereiche. Auf unseren Test- oder Live-Servern schalten wir dann alle Logging-Zustände ein (z. B. Debug
und höher), wenn wir LOTS von Daten, live oder einfach die allgemeinen wichtigen Informationen, wie Info
States und größer, ergreifen müssen. Wir haben immer Warn, Error and Fatal
Zustände immer an. Der Debug-Status erzeugt eine Menge Daten, daher verwenden wir diese nur sparsam.
Also zusammenfassend, schlage ich vor, dass Sie zwei Ansätze zu Ihrer WebApp verwenden. Elmah für ausgezeichnete unerwartete Fehler Trapping und NLog für erwartet Informationen und Fehler.
Schließlich ist NLog WAAAY einfacher zu bedienen/zu arbeiten als Log4Net. Es übertrifft es im Grunde, IMO.
- 1. Log4Net protokolliert nicht oder Fehler
- 2. Konnte Datei oder Assembly 'log4net' nicht laden
- 3. Konnte Datei oder Baugruppe nicht laden 'log4net
- 4. Log4net auf IIS7,5 oder anderen Logger?
- 5. Ist log4net tot?
- 6. Versteckte Juwelen von Log4Net?
- 7. Ändern des log4net-Konvertierungsmusters oder -Layouts zur Laufzeit
- 8. Wo sollte ich log4net Config - App.config oder AppName.dll.log4net?
- 9. Konnte Datei oder Assembly 'log4net nicht laden, Version = 1.2.10.0
- 10. System.IO.FileLoadException: Datei oder Baugruppe konnte nicht geladen werden Log4net
- 11. Log4Net mit Application Insights
- 12. Linqpad und Log4net
- 13. Existiert Log4Net Http Appender?
- 14. Thread-Sicherheit von log4net
- 15. Log4Net-Filter "OR"
- 16. log4net BufferingForwardingAppender Leistungsproblem
- 17. log4net Prozess-ID-Informationen
- 18. Log4net Referenz Assembly Ausgabe
- 19. C# log4net in ClassLibrary
- 20. Keine Ausgabe von log4net
- 21. Log4net erstellt keine Protokolldatei
- 22. Log4Net dynamisch rekonfigurieren
- 23. Log4Net und .NET 4.0
- 24. Log4Net Levels Numerische Werte
- 25. log4net mit .NET 4.0
- 26. Log4Net, ThreadContext und Global.asax
- 27. Log4Net Konfiguration Log-Level
- 28. log4net protokolliert nicht ThreadContext
- 29. Log4Net und zusätzliche Felder
- 30. Log4Net nicht Protokollierung Fehler
Wie sichere ich seine Log-Seite? – Caveatrob
Das war Teil meiner "Modifikation". Ich wollte nicht, dass irgendwelche der aufgezeichneten Informationen offengelegt wurden, also habe ich es verwässert, um die Informationen nur in der Datenbank zu protokollieren und mir eine E-Mail zu senden. Wenn ich dann eine E-Mail bekomme, kann ich mir das Datenbankprotokoll ansehen. Ich habe sowieso keine Fernanzeige. – NYSystemsAnalyst
Scott Hanselman hatte auch einen guten Beitrag zum Aufstehen und Laufen mit ELMAH: http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx –