2009-03-11 4 views
4

Je souhaite que mon application Web Grails envoie un e-mail pour chaque exception qui parvient à l'utilisateur final.Publier des journaux d'exceptions dans une application Web Grails en direct

Fondamentalement, je suis à la recherche d'une façon élégante pour atteindre quelque chose d'équivalent à:

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); 
    } 

Répondre

6

Il s'avère que cette question exacte était answered on the Grails mailing list il y a quelques jours.

La solution est d'ajouter ce qui suit à la log4j section de Config.groovy:

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 en ajoutant le soleil javamail.jar et activation.jar la lib/-folder.

0

En supposant que vous pouvez le faire à partir groovy, vous aurez envie d'utiliser un cadre de l'exploitation forestière, comme log4j pour ce qui a des enregistreurs qui peuvent ajouter des données de journal à une base de données, send email, etc.

0

Vous pouvez également jeter un oeil à exceptionHandler mécanisme fourni par Grails; Je trouve cela très simple. encore assez puissant pour prendre soin de tous mes besoins de gestion des exceptions propres. N'ont pas testé cette approche avec 1.1 jusqu'à présent; mais fonctionne très bien avec 1.0.3.

class BootStrap { 

    def exceptionHandler 

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

    def destroy = { } 
} 

Blog détaillé ici:

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

Questions connexes