我正在使用Spring框架和Hibernate开发Web应用程序。我的问题是我经常收到由于我在代码库中的某个地方犯了错误而导致的404错误,但控制台中没有异常消息。因此,我正在努力找到错误的位置,因为项目变得非常大并且手动尝试找到问题是不切实际的。我假设Spring导致问题所以我的问题是:是否有某种方法可以启用更详细的错误消息?感谢
答案 0 :(得分:0)
404是一个http错误,只有您的Web服务器可能知道它。很可能这些失败的请求,您的应用程序服务器或Spring容器从未被命中。查找Web服务器日志以确定问题。
IIS服务器上的404故障排除
http://blogs.iis.net/tomkmvp/archive/2009/04/27/troubleshooting-a-404.aspx
RAD网络服务器上的404故障排除
http://www-304.ibm.com/support/docview.wss?uid=swg27035752&aid=1
答案 1 :(得分:0)
正如一些人已经提到的那样,这里的问题是某些错误(如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
}
}
答案 2 :(得分:0)
问题最终是我的一个Hibernate实体丢失了一些注释。按照以下链接中的步骤,通过提供更详细的错误消息帮助追踪它:
http://www.captaindebug.com/2011/07/using-hibernate-validation-annotation.html
答案 3 :(得分:0)
我还遇到了404错误时没有控制台输出的问题。
在The Saint's的回答中,没有控制台日志的原因之一: 这里的问题是某些错误(如404异常)被Servlet容器拦截
"弹簧的框架组基准3.2.3.pdf" - > 1.3 - >记录 - >使用Log4J解决了我环境中的问题。