Spring控制着我的Tomcat日志

时间:2013-02-26 15:32:47

标签: java spring tomcat spring-mvc spring-security

我正在为在Tomcat 7上运行的Java Web应用程序使用spring-mvc和security。我通过扩展AbstractAuthenticationProcessingFilter来定制spring安全性并捕获自定义异常,我有一个扩展ExceptionHandlerExceptionResolver的类。

现在,当我得到异常,运行与否时,我无法在tomcat日志中看到异常的原因。 Tomcat生成一个日志,它是关于spring安全链和ExceptionHandlerExceptionResolver类中的类。

如何获取我的默认日志?

示例日志:

  

org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:927)   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)   javax.servlet.http.HttpServlet.service(HttpServlet.java:621)   org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)   javax.servlet.http.HttpServlet.service(HttpServlet.java:728)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:150)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   com.cagatay.deneme.server.security.AuthFilter.doFilter(AuthFilter.java:65)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)   org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)   org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)   org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)   

根本原因 java.lang.NullPointerException   com.cagatay.deneme.server.controller.errorhandler.ErrorController.doResolveHandlerMethodException(ErrorController.java:40)   org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:60)   org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:136)   org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1148)   org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:985)   org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)   org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)   org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)   org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811)   javax.servlet.http.HttpServlet.service(HttpServlet.java:621)   org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)   javax.servlet.http.HttpServlet.service(HttpServlet.java:728)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)   org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:150)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   com.cagatay.deneme.server.security.AuthFilter.doFilter(AuthFilter.java:65)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50)   org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)   org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:342)   org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192)   org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)   org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)   org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)

2 个答案:

答案 0 :(得分:0)

根据堆栈跟踪,看起来NullPointerException中第40行的com.cagatay.deneme.server.controller.errorhandler.ErrorController出现了问题。您需要找出导致此问题的原因并进行修复。

编辑:

根据docs for AbstractHandlerMethodExceptionResolver,异常处理程序应返回ModelAndView。在您的代码中,会抛出NullPointerException。现在不看你的代码,我不知道你是否正在重新抛出一个异常,但是堆栈跟踪让我相信NPE起源于第40行。恕我直言,异常处理程序本身不应该抛出异常。

答案 1 :(得分:0)

在最高级别,您可以捕获任何预期和意外的异常,并根据您希望它们自己手动记录它们,而不是让它们传播到Spring并让它自己做。

执行此操作的一种方法是使用ExceptionHandler。示例:http://www.mkyong.com/spring-mvc/spring-mvc-exceptionhandler-example/