我试图找出一种干净的方法来拦截我的应用程序中发生的未捕获的异常.
我已经配置log4j来记录正常的应用程序流并捕获异常,因此需要注意.现在,我有一个类,它接收所有错误级别的消息,并将它们添加到队列中,以便批量发送电子邮件.
理想情况下,我希望有一种方法可以阻止未被捕获的异常,这样我就可以将它们传递给相同的"电子邮件批处理"队列,但如果这不可行,我肯定会接受建议.
我熟悉JBoss上的LogInterceptors,但这个项目使用的是Tomcat.我有什么方法可以解决这个问题吗?是否有Tomcat的LogInterceptor equivelant?我应该尝试将Tomcat日志记录重定向到自定义appender吗?(如果是的话 - 任何暗示?)其他一些想法?
我认为现在这已成为一个已解决的问题,所以我希望能够挖掘一些集体智慧.谢谢,大家,提前.
根据J2EE 1.4规范,servlet中未捕获的异常可能会转发到部署描述符中定义的错误页面.发生这种情况时,页面实现将接收原始请求和响应对象,并添加一个名为javax.servlet.error.exception的请求属性,该属性包含异常对象.
也就是说,我实际上并没有使用Tomcat完成此操作,而且我已经处理过的大多数Web应用程序转发到Web服务器级别的通用错误页面.
编辑:刚刚在我的本地服务器上尝试了,将以下内容添加到我的web.xml后,它的工作原理如下:
java.lang.Exception /dumpRequest.jsp