Logback SMTPAppender senden nur eine E-Mail zu einem bestimmten Zeitpunkt mit allen Ausnahmen

8

Gibt es eine Möglichkeit, den SMTPAppender in LogBack so zu konfigurieren, dass er die folgenden Kriterien erfüllt?

  1. Gruppiere alle Ausnahmen in einer Nachricht
  2. Senden Sie den täglichen Protokollbericht nur, wenn Ausnahmen aufgetreten sind
  3. Senden Sie den Bericht nur einmal in einer E-Mail zu einer bestimmten Tageszeit.

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%     
Carlos 24.06.2015, 11:07
quelle

1 Antwort

9

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:

  • erweitern SMTPAppender
  • überschreibt die sendBuffer -Methode in SMTPAppenderBase , sodass die Protokollnachricht einfach einer Sammlung hinzugefügt wird
  • Fügen Sie einen ScheduledExecutorService zu Ihrem Appender hinzu, der einmal pro Tag eine sendEmail -Methode ausführt
  • Die 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.

    
assylias 26.06.2015, 20:24
quelle

Tags und Links