Ich möchte, dass E-Mails nur unter bestimmten Bedingungen gesendet werden, und protokolliere den Fehler in der Datenbank in allen Fällen. Aber wie ich es verstehe, kann das Filtern für eines der beiden nicht funktionieren. Ist das richtig? Wenn ja, wie kann ich es erreichen?
Beachten Sie auch, dass ich gerade zusätzliche Informationen in der Datenbank speichern am ErrorMail_Mailing
in global.asax
wie geantwortet von Atif Aziz . Da E-Mails nur bedingt gesendet werden und ErrorMail_Mailing
nur beim Senden von E-Mails ausgelöst wird, frage ich mich, wie ich zusätzliche Informationen über alle Fehler in der Datenbank speichern könnte.
UPDATE:
Ich habe den Elmah-Code ein wenig modifiziert, um meine Bedürfnisse zu befriedigen.
Der erste Schritt besteht darin, Module zu konfigurieren. Stellen Sie sicher, dass Sie Elmah.ErrorFilterModule nach einem der Protokollierungsmodule von ELMAH hinzufügen, wie hier mit ErrorLogModule:
gezeigt %Vor%Dann in Ihrem Konfigurationsbereich registriert Elmah.ErrorFilterSectionHandler wie hier gezeigt:
%Vor%Jetzt können Sie Filter hinzufügen, um zu entscheiden, welche Fehler für welche Quelle ignoriert werden sollen. Das folgende Beispiel zeigt, wie verhindert werden kann, dass 404 HTTP-Fehler gesendet werden.
%Vor%Sie können weitere Informationen über den folgenden Link herausfinden.
Die ELMAH-Dokumentation zur Fehlerfilterung enthält einen Sektion genau auf Ihr Szenario und wird aufgerufen, was sich auf Filterung nach Quelle . Im Folgenden wird beispielsweise verhindert, dass 404-HTTP-Fehler gesendet werden, sie werden jedoch weiterhin protokolliert (vorausgesetzt, dass beide Mailing- und Protokollierungsmodule registriert sind):
%Vor%Wenn Sie alle Ausnahmen in der Datenbank speichern möchten, sollten Sie einfach das ErrorLogModule verwenden können, das unabhängig von dem ist, was Sie im Fehlermail-Modul tun:
%Vor%und dann in deiner elmah-Sektion deiner config:
%Vor%Sie sollten das StackExchange.Exceptional
ausprobierenDieses Projekt wurde von ELMAH inspiriert, aber es passte nicht zu unseren Besonderheiten erfordert eine sehr, sehr hohe Fehlerprotokollierung bei Netzwerkebene Ereignis tritt auf.
StackExchange.Exceptional ist der intern verwendete Fehlerhandler Stapeln Sie Exchange und Stack Overflow für die Protokollierung in SQL.
Es unterstützt auch JSON- und Speicherfehlerspeicher, Filtern von Ausnahmen vor dem Logging und Fail / Retry-Mechanismen zum Speichern von Fehlern if Es gibt eine Unterbrechung der Verbindung zum Fehlerspeicher.
Es ist sehr anpassbar und es ist wirklich einfach, etwas nach Ihren Bedürfnissen hinzuzufügen. Wie ich eine Pull-Anfrage sehen kann, hat die E-Mail-Funktionalität E-Mail-Funktionalität implementiert, damit Sie von dort aus starten können.
Um es einzurichten, müssen Sie sich nur das Web ansehen .config und wählen Sie aus, was aktiviert werden soll.
Ich hoffe, es hilft.
Tags und Links c# asp.net elmah error-logging