发生500错误时,Java Spring会持久堆栈跟踪

时间:2015-07-02 00:21:06

标签: spring spring-boot

我在Amazon EC2上托管Spring启动应用程序。有时在早上我去网页时我会看到

“无法打开JPA EntityManager进行事务;嵌套异常是javax.persistence.PersistenceException:org.hibernate.TransactionException:JDBC开始事务失败:”

来自浏览器。但是我没办法找回堆栈跟踪。这样就可以在Spring中实现:当发生500错误时,spring将捕获异常并将其存储在数据库或本地文件中,以便稍后将其恢复。我认为调试难以重现的500错误会很有帮助。

1 个答案:

答案 0 :(得分:1)

是的,您可能只需要配置控制器以使用Spring异常处理https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

然后,您可以配置要捕获的异常级别(在您的情况下,一般异常会没问题,或者如果您更好地了解特定异常)

    // Total control - setup a model and return the view name yourself. Or consider
    // subclassing ExceptionHandlerExceptionResolver (see below).
    @ExceptionHandler(Exception.class)
     public ModelAndView handleError(HttpServletRequest req, Exception exception) {
       logger.error("Request: " + req.getRequestURL() + " raised " + exception);
       //Here you can persist the exception or just write in the log
       ModelAndView mav = new ModelAndView();
       mav.addObject("exception", exception);
       mav.addObject("url", req.getRequestURL());
       mav.setViewName("error");
       return mav;
     }
   }