2

我需要tomcat放置404类型错误的日志。我正在使用:Centos 5.2 上的 tomcat 6

我在部署在 tomcat 上的应用程序中遇到 404 错误。当无法找到请求的文件和其他简单错误时,我无法找到 tomcat 放置消息的日志。- 我不是在谈论应用程序记录的内容,只是 404 类型的内容。

我检查了 /logs 并发现了以下类型的文件

  • catalina.out :包含启动和关闭消息(主要是 INFO 消息)
  • catalina..log :包含与上述文件相同的日期数据
  • host-manager.year-mm-dd.log :空(似乎是用于 tomcat 管理器的,我没有使用过)
  • localhost.year-mm-dd.log :一些与应用程序相关的日志消息(org.apache.catalina.core.ApplicationContext ... INFO 消息)
  • manager.year-mm-dd.log:空

因此,这些都不包含 404 错误。由于我通过简单地在 /usr/share 中解压缩它来安装 tomcat,因此我很确定它在 /var/log 中没有日志(我检查了 catlina 或 tomcat 并没有任何日志)。

正如 JoseK 所建议的那样,我已经尝试在 server.xml 中配置一个阀门

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
     prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

这创建了文件 /logs/localhost_access_log.txt ,其中包含传入请求的详细信息,例如

192.168.40.1 - - [23/Jul/2010:09:14:13 +0500] "GET /<project url>/files/file1.html HTTP/1.1" 404 1084

它包含请求 url://files/file1.html 我需要它找不到的文件的路径:/usr/share...../files/file1.html JoseK 进一步建议为此编写一个自定义阀门,但对于一个小要求来说似乎工作量太大了。有谁知道更简单的方法???

4

1 回答 1

3

默认情况下,Tomcat 不记录请求,但如果您取消注释以下行,它可以这样做conf/server.xml

<Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>

这也将记录您的 404。

从 OP 的评论来看,解决方案似乎是编写一个自定义 AccessLogValve。扩展 Tomcat 并添加所需的输出格式。

有关想法,请参见http://tomcat.apache.org/tomcat-5.5-doc/config/valve.htmlhttp://www.devx.com/Java/Article/32730/1954

于 2010-07-24T11:37:48.760 回答