发送异常或错误的电子邮件

时间:2009-12-21 09:13:06

标签: java email jsp exception-handling

我想在我的网络应用程序中发生错误或异常时收到一封电子邮件,以便我可以快速完成修复。我已经设置了一个JSP错误页面。我喜欢向客户端显示错误页面,同时收到一封电子邮件。我为每个jsp使用jsp和相应的servlet和控制器。

如何在发生错误或异常时调用servlet发送电子邮件? web.xml中的配置如何?

请帮忙。

8 个答案:

答案 0 :(得分:5)

您可以编写自己的解决方案代码,也可以使用标准日志记录包中的电子邮件选项。例如,log4j具有SMTPAppender,可以满足您的需要。

答案 1 :(得分:5)

这不仅取决于您已经使用的API和/或框架(例如log4j),还取决于您如何处理全局异常。如果您只是在error-page中确定了web.xml,那么前面提到的log4j肯定不会看到/处理它。你需要抓住并记录你自己

您可以使用Filter url-pattern /*来监听{/ 1}}:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
    try {
        chain.doFilter(request, response);
    } catch (Exception e) {
        logger.error(e); // Let "error" level associate with SMTPAppender.
        throw new ServletException(e); // Will be handled by error-page.
    }
}

或者在控制器servlet中,如果你有一个:

public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    View view = new View(request, response);
    Action action = ActionFactory.getAction(request);
    try {
        action.execute(view);
    } catch (Exception e) {
        logger.error(e); // Let "error" level associate with SMTPAppender.
        throw new ServletException(e); // Will be handled by error-page.
    }
    view.navigate();
}

作为一个简短但语义上讨厌的替代方法,您还可以在JSP中使用 scriptlets exception在JSP中可用作隐式变量。将其记录在错误页面中,让记录器处理邮件。 E.g。

<% logger.error(exception); %>

答案 2 :(得分:0)

您可以使用Java Mail APIjavadoc here,而here是开发人员指南。

答案 3 :(得分:0)

我可能错了,但是从您的问题看来,您希望它是配置问题,或者向web.xml添加一些参数。它实际上有点复杂,因为Java EE比那更“低级”。

您需要使用JavaMail API编写一些发送电子邮件的代码。 (Here是一个源代码示例。)该代码必须包含在异常/错误处理程序中。

使这个功能可配置是个好主意,这样你就可以在应用程序的不同部分打开或关闭它。

无论出于何种原因,仔细考虑发送邮件时发生的情况也是一个好主意。

当然,您需要一个现有的邮件服务器和现有的邮件帐户。

答案 4 :(得分:0)

我建议您使用现有的监控解决方案,如log4j(@Ben),nagios或其中一种商业支持的开源产品。

如果您使用自己的解决方案,请注意以下问题:

  • 发送监控垃圾邮件的大量误报

  • 监控垃圾邮件,导致您错过真实警报

  • 因电子邮件中断而丢失警报

  • 没有警报,因为您的系统已经过紧张而不是抛出异常

答案 5 :(得分:0)

log4j解决方案特别好,因为您可以将其配置为发送预先记录的日志行,这样您就可以了解有关异常如何发生的更多上下文

答案 6 :(得分:0)

您应该彻底调查如何在Servlet API中配置错误页面。

在该错误页面中,您可以使用触发异常执行任何操作。

请参阅Java EE教程,了解如何在http://java.sun.com/javaee/5/docs/tutorial/doc/bnahe.html#bnahi

处理JSP页面中的错误

编辑:另请参阅http://tomcat.apache.org/tomcat-6.0-doc/jndi-resources-howto.html处的Tomcat文档。搜索JavaMail。

答案 7 :(得分:0)

你在使用Spring吗?如果是,则可以在发生错误时使用异常解析程序重定向到特定控制器。如果出现JSP错误,您可以配置错误页面以发送邮件。

相关问题