Рассылка журналов исключений в веб-приложении Grails

StackOverflow https://stackoverflow.com/questions/635590

  •  10-07-2019
  •  | 
  •  

Вопрос

Я бы хотел, чтобы мое веб-приложение 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);
  }
Это было полезно?

Решение

Оказывается, на этот точный вопрос был ответ. в списке рассылки Grails пару дней назад.

Решение состоит в том, чтобы добавить следующее в раздел log4j Config.groovy:

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 и активации.jar в папку lib /.

Другие советы

Предполагая, что вы можете сделать это из groovy, вы захотите использовать каркас журналирования, такой как log4j для этого, у которого есть регистраторы, которые могут добавлять данные журнала в базу данных, отправить электронное письмо и т. Д.

Вы также можете взглянуть на механизм exceptionHandler , предоставленный Grails; Я нахожу это очень простым; но достаточно мощный, чтобы позаботиться обо всех моих пользовательских чистые потребности обработки исключений. До сих пор не проверял этот подход с 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.b February.net/2008 /03/grails-custom-exception-handling.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top