Java 如何拦截SpringMVCWeb应用程序中的所有异常以及如何存储大量信息?

Java 如何拦截SpringMVCWeb应用程序中的所有异常以及如何存储大量信息?,java,spring,spring-mvc,exception,web-applications,Java,Spring,Spring Mvc,Exception,Web Applications,在web应用程序(Spring3.1.2MVC)中,我需要截获所有异常以将信息存储在数据库中。它就像一个记录器(它已经在log4j.xml文件中配置好了),但它的想法是将信息保存在特定的数据库表中。 那么,如何按方面处理所有异常呢?通过过滤器?拦截机?不是由@ControllerAdvice(从Spring 3.2开始)创建的,因为该项目是使用Spring 3.1构建的 第二次,当我捕获异常时,我如何处理它,如何检索大量信息:请求url、引用url、类、行、对象状态(类+值) 有些框架就是为了这

在web应用程序(Spring3.1.2MVC)中,我需要截获所有异常以将信息存储在数据库中。它就像一个记录器(它已经在log4j.xml文件中配置好了),但它的想法是将信息保存在特定的数据库表中。 那么,如何按方面处理所有异常呢?通过过滤器?拦截机?不是由@ControllerAdvice(从Spring 3.2开始)创建的,因为该项目是使用Spring 3.1构建的

第二次,当我捕获异常时,我如何处理它,如何检索大量信息:请求url、引用url、类、行、对象状态(类+值)

有些框架就是为了这个目的而存在的(拦截和存储异常)?

我非常喜欢它,它为数据库提供了一个现成的附件。基本上,将所有日志信息写入数据库、堆栈跟踪、消息和MDC(设置时)

要向日志添加其他属性,您可以注册[
MDCInsertingServletFilter
],它将向MDC添加URL、远程ip、用户名(如果可用)等内容(因此将被记录)

对于其他信息,可以指定包含所需信息


要记录所有异常,您可以创建一个后抛出建议,并将其应用于您的类。一件棘手的事情是确保只记录一次异常,而不是一次又一次地记录。

log4j已经有一个数据库记录器,或者至少logback有一个。它将您记录的所有内容记录到数据库中,而不是文件中。要处理异常,可以使用after-throwing通知并进行日志记录。对于所有其他信息,请创建一个过滤器来设置MDC中的值。(Logback提供了一个开箱即用的方法)。您是否尝试过使用
@ExceptionHandler(Throwable.class)