Spring的异常日志记录

时间:2014-06-30 12:02:18

标签: java spring jsf exception logging

我听说可以在我的web-App中记录(或做一些其他的)Spring异常,所以我不必手动插入每个“catch(){}”阻止Log-function

有没有人有过Spring-overall-logging的经验?我只想在出现错误时获得通知

1 个答案:

答案 0 :(得分:0)

ExceptionHandler是处理Faces生命周期中抛出的意外异常的中心点。在应用程序启动或关闭期间,不得向ExceptionHandler通知任何异常。

有关默认实现的要求,请参阅规范起草文档。可以通过以下两种方式之一将异常传递给ExceptionHandler:

1.)确保不会发现异常或被捕获并重新抛出异常。

这种方法允许JSF.6.2节中指定的ExceptionHandler工具对异常进行操作。

2.)通过使用系统事件工具发布包装异常的ExceptionQueuedEvent。

此方法需要手动发布ExceptionQueuedEvent,但允许在事件中存储有关Exception的更多信息。以下代码是如何执行此操作的示例。

全局异常处理程序 - 异常处理是一个贯穿各领域的问题,应该对我们应用程序中的所有切入点进行处理。我们已经研究过Spring AOP,这就是为什么Spring提供@ControllerAdvice注释,我们可以使用它来定义我们的全局异常处理程序。

Global Controller Advice中的处理程序方法与基于Controller的异常处理程序方法相同,并且在控制器类无法处理异常时使用。

示例代码

@ExceptionHandler(Exception.class)
    public ModelAndView getExceptionPage(Exception e, HttpServletRequest request) {
            request.setAttribute("errorMessageObject", e.toString());
            return model; 
    }

**这里我们可以捕获基本异常类Exception.class或任何其他异常类。我们也可以抛出并捕获我们自己的自定义异常类。