邮件异常日志记录在实时Grails webapp中

时间:2009-03-11 17:39:58

标签: exception grails gsp

我希望我的Grails网络应用程序能够为每个到达最终用户的例外发送电子邮件。

基本上我正在寻找一种优雅的方式来实现相当于:

的东西
  try {
      // ... all logic/db-access/etc required to render the page is executed here ...
  }
  catch (Exception e) {
      sendmail("exception@example.com", "An exception was thrown while processing a http-request", e.toString);
  }

3 个答案:

答案 0 :(得分:6)

几天前,这个确切的问题是answered on the Grails mailing list

解决方案是将以下内容添加到Config.groovy的log4j部分:

log4j {
    ...
    appender.mail='org.apache.log4j.net.SMTPAppender'
    appender.'mail.To'='email@example.com'
    appender.'mail.From'='email@example.com'
    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)
}

另外将sun-javamail.jar和activation.jar添加到lib / -folder。

答案 1 :(得分:0)

假设您可以从groovy执行此操作,您将需要使用诸如log4j之类的日志记录框架,该框架具有可以将日志数据附加到数据库{4}}等的记录器。

答案 2 :(得分:0)

您还可以查看Grails提供的 exceptionHandler 机制;我发现它非常简单;但足够强大,可以照顾我的所有习惯和清理异常处理需求。到目前为止还没有用1.1测试这种方法;但与1.0.3一起工作得很好。

class BootStrap {

   def exceptionHandler

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

  def destroy = { }
}

详细博客:

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