4

Grails Webアプリで、エンドユーザーに届く例外ごとに電子メールを送信したいと思います。

基本的に私は以下と同等の何かを達成するためのエレガントな方法を探しています:

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

3 に答える 3

6

この正確な質問は、数日前にGrails メーリング リストで回答されたことが判明しました。

解決策は、Config.groovy の log4j-section に以下を追加することです。

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 に追加します。

于 2009-03-11T20:02:40.520 に答える
0

groovy からこれを実行できると仮定すると、ログ データをデータベースに追加したり、電子メールを送信したりできるロガーを備えたlog4jなどのロギング フレームワークを使用する必要があります。

于 2009-03-11T17:47:37.023 に答える
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

于 2009-03-12T01:13:05.253 に答える