Spring Webapp 在没有控制台日志的情况下抛出 404 错误
Posted
技术标签:
【中文标题】Spring Webapp 在没有控制台日志的情况下抛出 404 错误【英文标题】:Spring Webapp throwing 404 errors with no console log 【发布时间】:2014-03-19 04:58:30 【问题描述】:我正在使用 Spring 框架和 Hibernate 开发一个 Web 应用程序。我的问题是我经常收到 404 错误,这是由于我在代码库中某处犯的错误导致的,但控制台中没有异常消息。因此,我很难找到错误所在,因为项目已经变得非常大,手动尝试查找问题是不切实际的。我假设 Spring 导致了这个问题,所以我的问题是:有什么方法可以启用更详细的错误消息吗?谢谢
【问题讨论】:
如果 Spring 至少在调试或信息级别没有记录任何内容,这意味着 Spring 不参与。换句话说,您的 Servlet 容器正在给您 404 响应。 你使用的是哪个网络服务器? 如果您向我们提供您的 servlet 映射和失败请求的示例,也会有所帮助。 好的答案也可以找到here 【参考方案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
【讨论】:
以上是关于Spring Webapp 在没有控制台日志的情况下抛出 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
spring boot .war tomcat 应用程序日志不存在
spring log4j.properties 没有日志的问题
使用tomcat 6在spring webapp中设置Commons Logging / Log4j的问题