Gibt es eine Möglichkeit, den SMTPAppender
in LogBack so zu konfigurieren, dass er die folgenden Kriterien erfüllt?
Meine aktuelle Implementierung ist weit davon entfernt, das oben genannte zu tun, aber derzeit sendet sie 3 E-Mails, wenn eine Ausnahme auftritt - die Ausnahmebedingungsnachricht, der Stacktrace und ein Flush des Puffers.
%Vor%Eine einfache Lösung besteht darin, diese Fehler in einer Datei zu protokollieren und ein Skript auf Ihrem Server / Computer zu installieren, das die Datei einmal am Tag liest und eine E-Mail sendet.
Wenn Sie einen Appender verwenden möchten, scheint es mir, dass Sie Ihre eigenen rollen müssen, da ich nicht glaube, dass der Standard SMTPAppender
Ihnen ermöglicht, einmal am Tag E-Mails zu senden:
SMTPAppender
sendBuffer
-Methode in SMTPAppenderBase
, sodass die Protokollnachricht einfach einer Sammlung hinzugefügt wird ScheduledExecutorService
zu Ihrem Appender hinzu, der einmal pro Tag eine sendEmail
-Methode ausführt sendEmail
-Methode würde auf this
für Thread-Sicherheit synchronisieren, prüfen, ob die Sammlung leer ist, eine E-Mail mit allen Fehlern senden und die Sammlung löschen Eine grundlegende Implementierung könnte wie die folgende Klasse aussehen (ich habe sie nicht getestet - ich verwende Java 8 Syntax, aber Sie können sie bei Bedarf durch anonyme Klassen ersetzen). Beachten Sie, dass ich nur das Ereignis behalte, das die Ausnahme verursacht hat. Vielleicht möchten Sie auch den Inhalt des CyclicBuffer in der sendBuffer-Methode beibehalten und / oder einige Fehlertrennzeichen zwischen Fehlern in der sendEmail-Methode hinzufügen. Dies kann sehr komplex werden und ist abhängig von Ihren Anforderungen abgestimmt.
%Vor%Ihre Logback-Konfigurationsdatei sieht dann wie folgt aus:
%Vor%Um weiter zu gehen, könnten Sie Parameter wie die Uhrzeit des Versands, die Anzahl der E-Mails pro Tag usw. hinzufügen.
Tags und Links java logging logback smtpappender