如何在Tomcat's catalina.out中使用Spring MVC获取错误消息



我请求一个测试链接https://terran.gamebox.com/facebook/issueOrder.jhtml?amount=5&gameId=1&服务器Id=1&role=角色我可以在页面中看到消息但在加泰罗尼亚没有出现异常

这是我的配置文件

<bean id="exceptionResolver" class="com.gamebox.HandlerException">

HandlerException实现HandlerExceptionResolver

我必须指出,我可以获得其他控制器的异常,如null pointer异常

我想这是一个spring内部异常,但我需要在catalina.out文件中捕获所有异常。

我在@Controller中创建了一个@Service依赖项,然后删除了@Service的类文件。当我启动tomcat时,一切都很好,我请求这个控制器,我得到了异常消息,但catalina.out什么都没有显示。tomcat在运行模式下运行。

我粘贴了响应消息,因为这个mvc的操作将在第二天修复这个错误,但如果它没有在catalina.out中显示,我将来使用带有mvc的ajax时,将不会在我的平台中跟踪任何东西,我将被定义为找不到任何东西。

我确信这涉及交易经理

java.lang.ClassNotFoundException:com.gamebox.service.FacebookPayOrderServiceorg.apache.catalina.loarder.WebappClassLoader.loadClass(WebappClassLoader.java:1680)org.apache.catalina.loarder.WebappClassLoader.loadClass(WebappClassLoader.java:1526)java.lang.Class.getDeclaredFields0(本机方法)java.lang.Class.privateGetDeclaredFields(Class.java:2300)java.lang.Class.getDeclaredFields(Class.java:1745)org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotatonBeanPostProcessor.java:374)org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotatonBeanPostProcessor.java:322)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:846)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:498)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117)org.springframework.web.method.HHandlerMethod.createWithResolvedBean(HandlerMethod.java:220)org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethod Mapping.java:240)org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethod Mapping.java:56)org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMaping.java:298)org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1091)org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1076)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:896)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)javax.servlet.httpHttpServlet.service(HttpServlet.java:617)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)javax.servlet.httpHttpServlet.service(HttpServlet.java:717)com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:270)com.gamebox.filter.SiteStatusFilter.doFilterInternal(SiteStatusFilter.java:51)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest filter.java:107)org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilter Proxy.java:346)org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilter Proxy.java:259)org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncoding filter.java:88)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest filter.java:107)

默认情况下,所有系统输出/错误都将转到catalina.out。不要使用System.out.println,使用日志API并将记录器配置为写入控制台。

如果您正在使用类似logback的东西,那么在您的应用程序中,只需考虑将其写入控制台:

http://logback.qos.ch/manual/configuration.html

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

为了驯服spring消息,可以删除commons日志记录,并使用slf4j将spring路由到相同的日志记录中。请参阅本文http://www.codingpedia.org/ama/how-to-log-in-spring-with-slf4j-and-logback/

这将有助于提高可见性,并为您实现将所有内容都放入catalina.out.

的目标。最后,我找到了解决方案,我非常满意。

只有一个更改,编辑TOMCAT_HOME/conf/logging.properties文件,然后找到这一行:

org.apache.catalina.core.ContainerBase.[catalina].[localhost].handlers=2localhost.org.apache.juli.FileHandler

将java.util.logging.ConsoleHandler附加到此行。

org.apache.catalina.core.ContainerBase.[catalina].[localhost].level=INFOorg.apache.catalina.core.ContainerBase.[catalina].[localhost].handlers=2localhost.org.apache.juli.FileHandler,java.util.logging.ConsoleHandler

所有异常都将写入catalina.out文件。^_^

最新更新