Это зависит не только от того, какие API и / или платформы вы уже используете (например, log4j), но также от того, как вы обрабатываете глобальные исключения. Если вы только что определили error-page
в web.xml
, то, например, вышеупомянутый log4j наверняка не увидит / не обработает его. Вам нужно поймать и записать это себя .
Вы можете использовать Filter
прослушивание на url-pattern
из /*
для этого:
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.
}
}
Или в сервлете контроллера, если он у вас есть:
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. exception
доступен как неявная переменная в JSP. Зарегистрируйте это на странице ошибок и позвольте регистратору обрабатывать почтовые сообщения. Э.Г.
<% logger.error(exception); %>