【问题标题】:Spring Webapp throwing 404 errors with no console logSpring Webapp 在没有控制台日志的情况下抛出 404 错误
【发布时间】:2014-03-19 04:58:30
【问题描述】:

我正在使用 Spring 框架和 Hibernate 开发一个 Web 应用程序。我的问题是我经常收到 404 错误,这是由于我在代码库中某处犯的错误导致的,但控制台中没有异常消息。因此,我很难找到错误所在,因为项目已经变得非常大,手动尝试查找问题是不切实际的。我假设 Spring 导致了这个问题,所以我的问题是:有什么方法可以启用更详细的错误消息吗?谢谢

【问题讨论】:

  • 如果 Spring 至少在调试或信息级别没有记录任何内容,这意味着 Spring 不参与。换句话说,您的 Servlet 容器正在给您 404 响应。
  • 你使用的是哪个网络服务器?
  • 如果您向我们提供您的 servlet 映射和失败请求的示例,也会有所帮助。
  • 好的答案也可以找到here

标签: java spring spring-mvc http-status-code-404


【解决方案1】:

我也遇到了 404 错误时没有控制台输出的问题。

正如在圣徒的回答中,没有控制台日志的原因之一: 这里的问题是某些错误(如 404 异常)被 Servlet 容器拦截

"spring-framework-reference-3.2.3.pdf" --> 1.3 --> Logging --> 使用Log4J,解决了我环境中的问题。

【讨论】:

    【解决方案2】:

    问题最终是我的一个 Hibernate 实体缺少几个注释。遵循以下链接中的过程,通过提供更详细的错误消息来帮助追踪它:

    http://www.captaindebug.com/2011/07/using-hibernate-validation-annotation.html

    【讨论】:

      【解决方案3】:

      正如一些人已经提到的那样,这里的问题是某些错误(如 404 异常)被 Servlet 容器拦截,因此永远不会到达 Spring 以及您可能设置的任何日志记录机制。所以这里的诀窍是改变你的异常的重要性顺序,以便 Spring 能够破解它。

      这篇文章描述了我在 Spring 中捕获、处理和充分记录所有异常的最佳方法:http://steveliles.github.io/configuring_global_exception_handling_in_spring_mvc.html

      自从我看到那篇博文以来,我一直在实施这个设置,至少可以说它是救命稻草。它将为您提供所需的详细错误消息。关键是基本上通过实现 Spring 的 HandlerExceptionResolver 和 Ordered 接口来创建自定义异常处理程序,然后返回可能的最低订单号,从而将您的异常处理移到图腾柱上:

      import org.springframework.core.*;
      import org.springframework.web.servlet.*
      
      public class LoggingHandlerExceptionResolver 
      implements HandlerExceptionResolver, Ordered {
          public int getOrder() {
              return Integer.MIN_VALUE; // we're first in line, yay!
          }
      
          public ModelAndView resolveException(
              HttpServletRequest aReq, HttpServletResponse aRes,
              Object aHandler, Exception anExc
          ) {
              anExc.printStackTrace(); // again, you can do better than this ;)
              return null; // trigger other HandlerExceptionResolver's
          }
      }
      

      【讨论】:

      • 如果DispatcherServlet 不参与处理请求,即。容器收到的请求没有映射到它,那么你的HandlerExceptionResolver 将不会做任何事情。
      【解决方案4】:

      404 是一个 http 错误,只有您的 Web 服务器可能知道它。很可能对于这些失败的请求,您的应用程序服务器或 Spring 容器从未被击中。查找网络服务器日志以识别问题。

      解决 IIS 服务器上的 404 问题

      http://blogs.iis.net/tomkmvp/archive/2009/04/27/troubleshooting-a-404.aspx

      RAD Web 服务器上的 404 故障排除

      http://www-304.ibm.com/support/docview.wss?uid=swg27035752&aid=1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 2013-03-28
        • 2020-01-28
        • 1970-01-01
        相关资源
        最近更新 更多