【问题标题】:Accessing Detailed logs in Tomcat访问 Tomcat 中的详细日志
【发布时间】:2012-05-14 07:13:24
【问题描述】:

在 Eclipse 中执行一个小型应用程序时,我从通过 Eclipse 本身运行的 Tomcat 服务器收到 Http Status 500 错误...

HTTP Status 500 -   

--------------------------------------------------------------------------------  

type Exception report  

message   

description The server encountered an internal error () that prevented it from fulfilling this request.  

exception   

java.lang.NullPointerException  
    org.apache.struts2.impl.StrutsActionProxy.getErrorMessage   (StrutsActionProxy.java:69)  
    com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)  
    org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)  
    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)  
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)  
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:500)  
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)  


 note The full stack trace of the root cause is available in the Apache Tomcat/7.0.8 logs. 

来自服务器的这条消息表明错误是由“NullPointerException”引起的。最后一行说“完整的堆栈跟踪在 Apache Tomcat/7.0.8 日志中可用。 我检查了在我的工作区中创建的日志( ${catalina.base} 设置为我的工作区中的一个文件夹),但日志没有提供有关“NullPointerException”的任何详细信息。日志中唯一存在的是...

0:0:0:0:0:0:0:1 - - [03/May/2012:15:19:16 +0530] "GET /KurniawanChap02Struts/ HTTP/1.1" 500 1789

我也尝试过提高“日志记录级别”,但即便如此也无济于事。 访问服务器的详细日志应该怎么做?

【问题讨论】:

  • 您实际上似乎拥有回溯和行# - 这应该足以让您入门。您的 Struts 应用程序完全有可能正在记录到不同的文件。检查您的 log4j.properties 文件(如果有的话)。
  • @paulsm4,它不是该帖子的副本,因为我想了解提供有关异常的详细信息的日志文件。谢谢。
  • 这是 catalina.out 日志文件吗?看起来这是访问日志文件之一(这个名字我现在不知道)。
  • 是的,没错。上面显示的摘录来自 localhost_access_log 文件。正在生成所有处理程序的文件,但它们都不包含有关上述“NullPointerException”的信息。我什至尝试将日志记录级别设置为“ALL”但得到相同的结果。我应该在哪里搜索“NullPointerException”?

标签: java eclipse tomcat logging


【解决方案1】:

我在使用不同版本的 Apache Commons 时遇到了一些类似的错误。为了获得有关这些错误的更多详细信息,我将 Tomcat 的默认 loggind 更改为 log4j。详细说明可以看Apache Tomcat 7 (7.0.27) - Logging in Tomcat

这是我使用的 log4j 的 xml 示例:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d %-5p (%c.java:%L).%M - %m%n" />
    </layout>
  </appender>
  <!-- CATALINA -->
  <logger name="org.apache.catalina.session">
    <level value="INFO" />
  </logger>
  <!-- TOMCAT -->
  </logger>
  <logger name="org.apache.jasper.compiler">
     <level value="INFO" />
  </logger>
  <!-- COMMONS -->
  <logger name="org.apache.commons.digester">
     <level value="INFO" />
  </logger>
  <root>
    <priority value="TRACE" />
    <appender-ref ref="STDOUT" />
  </root>
</log4j:configuration>

我希望这可以帮助你。

【讨论】:

  • 感谢您的帮助,但这是否意味着我可以从 java.util.logging 获得最好的结果?如果我不想配置 log4j 怎么办?有什么方法可以让我仍然使用 java.util.logging(默认的日志记录机制)并提供详细的日志?
  • Tomcat 默认定义了五个日志处理程序:一个系统范围的 ConsoleHandler` 和四个在CATALINA_HOME/conf/logging.properties 中定义的FileHandlers。默认情况下,所有日志级别都设置为FINE,因此在任何tomcat 日志中都不会出现FINERFINEST 级别的消息。您需要在 WebApp 中添加 logging.properties 以使用 Java Logging 框架进行登录。
  • 感谢您的回复...您对日志级别设置为 FINE 的看法是正确的。我将其更改为 ALL 但我仍然得到相同类型的日志。就 logging.properties 文件而言,VM 参数(Eclipse 中的服务器配置)已经指定了 logging.properties 文件的位置。那么为什么我还需要将 logging.properties 添加到我的 WebApp 中呢?
  • 您需要将logging.properties 文件打包到您的Web 应用程序的WEB-INF/classes 目录中。需要定义几个处理程序handlers=java.util.logging.ConsoleHandler,默认.handlers=java.util.logging.ConsoleHandler,级别java.util.logging.ConsoleHandler.level = FINE。和格式化程序java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
  • 如果 Tomcat 的类加载器在您的 Web 应用程序的 WEB-INF/classes 中看到 logging.properties 文件,它将使用它来配置该 Web 应用程序的日志记录,而忽略 CATALINA_HOME/conf/logging.properties
【解决方案2】:

我遇到了同样的问题。我删除了 properties->Java Build Path->Projects 中引用的未使用项目。它表明 xyz(project Name) 丢失。 我删除了xyz。

有时您可以检查 properties->Java Build Path->libraries 是否缺少任何 jar。如果是这样,您可以从类路径中添加该 jar。

【讨论】:

  • 你的回答与问题无关
猜你喜欢
  • 1970-01-01
  • 2018-01-14
  • 2018-10-06
  • 2017-11-25
  • 2014-06-29
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2020-08-18
相关资源
最近更新 更多