tomcat - 无法使 tomcat 记录基本 404 类型错误消息

标签 tomcat logging error-logging error-log

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

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

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

  • catalina.out:包含启动和 关机消息(主要是 INFO 消息)
  • catalina..log:包含 与上述文件的日期数据相同
  • host-manager.year-mm-dd.log:空 (好像是给tomcat manger用的, 我没用过)
  • localhost.year-mm-dd.log:一些 应用程序相关的日志消息 (org.apache.catalina.core.ApplicationContext... 信息消息)
  • 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

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

最佳答案

默认情况下,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寻求想法。

关于tomcat - 无法使 tomcat 记录基本 404 类型错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3320576/

相关文章:

java - 如何在 J2EE Web 应用程序中创建类似 "http://username.example.com"的域?

javascript - Winston 输出 json 而不是格式化字符串

angular - 防止 Sentry.io 记录服务器错误代码

javascript - 监听控制台.log

error-handling - 用什么来记录 Quartz 计划作业中的错误?

tomcat - 我如何将 servlet 映射定向到此 url

java - 在服务器上使用 SSL 配置 Tomcat

sql-server - 在Windows服务中使用Windows身份验证

php - 如何显示 PHP 内部服务器错误的详细信息?

java - 如何在不泄露任何安全信息或堆栈跟踪的情况下记录错误?