首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异常或错误时发送电子邮件

异常或错误时发送电子邮件
EN

Stack Overflow用户
提问于 2009-12-21 17:13:06
回答 8查看 5.1K关注 0票数 3

我希望在我的web应用程序中发生错误或异常时收到一封电子邮件,这样我就可以快速修复。我已经设置了一个JSP错误页面。我喜欢向客户展示错误页面,同时收到一封电子邮件。我使用jsp和每个jsp对应的servlet和控制器。

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

请帮帮忙。

EN

回答 8

Stack Overflow用户

发布于 2009-12-21 17:38:41

您可以编写自己的解决方案,也可以使用标准日志记录包中的电子邮件选项。例如,log4j提供了SMTPAppender,它将执行您所需的操作。

票数 5
EN

Stack Overflow用户

发布于 2009-12-22 00:23:05

这不仅取决于你已经使用的应用程序接口和/或框架(例如log4j),还取决于你如何处理全局异常。如果您刚刚在web.xml中定义了一个error-page,那么举个例子,前面提到的log4j肯定不会看到/处理它。你需要自己捕捉并记录。

您可以使用在/*url-pattern上侦听的Filter来实现以下目的:

代码语言:javascript
复制
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中(如果有):

代码语言:javascript
复制
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中使用scriptlet。exception在JSP中作为隐式变量提供。将其记录在错误页面中,并让记录器处理邮件内容。例如。

代码语言:javascript
复制
<% logger.error(exception); %>
票数 5
EN

Stack Overflow用户

发布于 2009-12-21 17:15:05

您可以使用Java Mail APIjavadoc herehere作为开发人员指南。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1939036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档