2009-03-11 5 views
4

Ich möchte, dass meine Grails-Web-App für jede Ausnahme, die den Endbenutzer erreicht, eine E-Mail sendet.Mailing Exception meldet sich in einer Live-Grails-Webanwendung an

Grundsätzlich für eine elegante Art, wie ich bin auf der Suche etwas Gleichwertiges zu erreichen:

try { 
     // ... all logic/db-access/etc required to render the page is executed here ... 
    } 
    catch (Exception e) { 
     sendmail("[email protected]", "An exception was thrown while processing a http-request", e.toString); 
    } 

Antwort

6

Stellt sich heraus, diese genaue Frage war answered on the Grails mailing list vor ein paar Tagen.

Die Lösung ist die folgende auf die log4j Schnitt Config.groovy hinzuzufügen:

log4j { 
    ... 
    appender.mail='org.apache.log4j.net.SMTPAppender' 
    appender.'mail.To'='[email protected]' 
    appender.'mail.From'='[email protected]' 
    appender.'mail.SMTPHost'='localhost' 
    appender.'mail.BufferSize'=4096 
    appender.'mail.Subject'='App Error' 
    appender.'mail.layout'='org.apache.log4j.PatternLayout' 
    appender.'mail.layout.ConversionPattern'='[%r] %c{2} %m%n' 
    rootLogger="error,stdout,mail" 
    ... 
    // rootLogger="error,stdout" (old rootLogger) 
} 

plus Zugabe Sonnen javamail.jar und activation.jar zum lib/-Ordner.

0

Vorausgesetzt, dass Sie dies von groovy tun können, wollen Sie einen Logging-Framework wie log4j dafür verwenden, die hat Logger, die Log-Daten an eine Datenbank anhängen können, send email, etc.

0

Sie könnten auch einen Blick auf ExceptionHandler Mechanismus von Grails bereitgestellt; Ich finde es sehr einfach; noch leistungsfähig genug, um auf alle meine kundenspezifischen & sauberen Ausnahmebehandlungsbedürfnisse aufzupassen. Habe diesen Ansatz bisher noch nicht mit 1.1 getestet; funktioniert aber sehr gut mit 1.0.3.

class BootStrap { 

    def exceptionHandler 

    def init = { servletContext -> 
     exceptionHandler.exceptionMappings = 
     [ 'NoSuchFlowExecutionException' :'/myControler/myAction', 
     'java.lang.Exception' : '/myController/generalAction'] 
    } 

    def destroy = { } 
} 

Detaillierte Blog hier:

http://blog.bruary.net/2008/03/grails-custom-exception-handling.html

Verwandte Themen