2014-02-19 66 views
3

我正在使用Spring框架和休眠的Web应用程序。我的问题是,我经常收到由于我在代码库中某个地方犯了错误而导致的404错误,但控制台中没有异常消息。正因为如此,我正在努力寻找错误发生的地方,因为项目变得非常庞大,而且手动试图找出问题是不切实际的。我假设Spring导致这个问题,所以我的问题是:是否有某种方式来启用更详细的错误消息?谢谢春天的Web应用程序抛出404错误,没有控制台日志

+0

如果Spring在调试或信息级别上至少没有记录任何东西,那意味着Spring不参与。换句话说,你的Servlet容器给你404响应。 –

+0

你正在使用哪个Web服务器? –

+0

如果你给我们你的servlet映射和一个失败的请求的例子,它也会有所帮助。 –

回答

0

作为一对夫妇的人已经提到它,这里的问题是,某些错误(如404异常)被Servlet容器拦截,因此永远不会到达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 
    } 
} 
+0

如果'DispatcherServlet'不参与处理请求,即。容器收到的请求没有映射到它,那么你的'HandlerExceptionResolver'将不会执行任何操作。 –

0

我还打404时没有错误控制台输出的问题。

作为圣人的答案,没有控制台日志的原因之一: 这里的问题是,某些错误(如404除外)由Servlet容器

“弹簧框架,参比得到截获3.2.3.pdf“ - > 1.3 - >记录 - >使用Log4J,解决了我的环境中的问题。

相关问题